|
@@ -162,6 +162,7 @@ class chctl
|
|
|
const sleep_ratio = 0.05;
|
|
|
const timeout_level = 180;
|
|
|
const sleep_time = 3600;
|
|
|
+ const sleep_count = 10;
|
|
|
|
|
|
private function sleep_item($ctls)
|
|
|
{
|
|
@@ -174,7 +175,7 @@ class chctl
|
|
|
if(!$fSleep)
|
|
|
{
|
|
|
[$count,$ratio] = $item->notify_ratio();
|
|
|
- if($count >= 10 && $ratio < self::sleep_ratio) {
|
|
|
+ if($count >= self::sleep_count && $ratio < self::sleep_ratio) {
|
|
|
$item->sleep();
|
|
|
$sleeps[] = $item;
|
|
|
} else {
|
|
@@ -245,24 +246,65 @@ class chctl
|
|
|
[$lCount,$lRatio] = $l->notify_ratio();
|
|
|
[$rCount,$rRatio] = $r->notify_ratio();
|
|
|
|
|
|
- $lprofit = ($out_price - $l->price()) * $lRatio;
|
|
|
- $rprofit = ($out_price - $r->price()) * $rRatio;
|
|
|
+ $lProfit = $out_price - $l->price();
|
|
|
+ $rRrofit = $out_price - $r->price();
|
|
|
|
|
|
- $lprofit = ncPriceFormat($lprofit);
|
|
|
- $rprofit = ncPriceFormat($rprofit);
|
|
|
- $lRatio = ncPriceFormat($lRatio);
|
|
|
- $rRatio = ncPriceFormat($rRatio);
|
|
|
+ $lProfitRatio = $lProfit * $lRatio;
|
|
|
+ $rRrofitRatio = $rRrofit * $rRatio;
|
|
|
|
|
|
- if($lprofit > $rprofit) return -1;
|
|
|
- elseif($lprofit < $rprofit) return 1;
|
|
|
- elseif($lprofit == 0)
|
|
|
+ $lProfit = ncPriceFormat($lProfit);
|
|
|
+ $rRrofit = ncPriceFormat($rRrofit);
|
|
|
+
|
|
|
+ $lProfitRatio = ncPriceFormat($lProfitRatio);
|
|
|
+ $rRrofitRatio = ncPriceFormat($rRrofitRatio);
|
|
|
+
|
|
|
+ $lRatio = ncPriceFormat($lRatio);
|
|
|
+ $rRatio = ncPriceFormat($rRatio);
|
|
|
+
|
|
|
+ if($lProfitRatio > $rRrofitRatio) return -1;
|
|
|
+ elseif($lProfitRatio < $rRrofitRatio) return 1;
|
|
|
+ elseif($lProfitRatio == 0) //利润获得概率为0,说明成功率或者利润可能性为0
|
|
|
{
|
|
|
- if($lCount > $rCount) return 1;
|
|
|
- elseif($lCount < $rCount) return -1;
|
|
|
- else return 0;
|
|
|
+ if($lCount > $rCount) //此时优先喂单
|
|
|
+ {
|
|
|
+ if($rCount >= self::sleep_count) //单量都大于阈值,优先利润
|
|
|
+ {
|
|
|
+ if($lProfit > $rRrofit) return -1;
|
|
|
+ elseif($lProfit < $rRrofit) return 1;
|
|
|
+ else return 0;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ elseif($lCount < $rCount)
|
|
|
+ {
|
|
|
+ if($lCount >= self::sleep_count) //单量都大于阈值,优先利润
|
|
|
+ {
|
|
|
+ if($lProfit > $rRrofit) return -1;
|
|
|
+ elseif($lProfit < $rRrofit) return 1;
|
|
|
+ else return 0;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ $count = $lCount;
|
|
|
+ if($count >= self::sleep_count) //单量都大于阈值,优先利润
|
|
|
+ {
|
|
|
+ if($lProfit > $rRrofit) return -1;
|
|
|
+ elseif($lProfit < $rRrofit) return 1;
|
|
|
+ else return 0;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- elseif($lRatio > $rRatio) return -1;
|
|
|
- elseif($lRatio < $rRatio) return 1;
|
|
|
+ elseif ($lRatio > $rRatio) return -1; //以下是利润概率相等,优先成功率保障
|
|
|
+ elseif ($lRatio < $rRatio) return 1;
|
|
|
else return 0;
|
|
|
};
|
|
|
|
|
@@ -271,10 +313,10 @@ class chctl
|
|
|
|
|
|
$desctor = function ($item) use($out_price) {
|
|
|
$name = $item->name();
|
|
|
- $in_price = $item->price();
|
|
|
[$count,$ratio] = $item->notify_ratio();
|
|
|
- $profit = ncPriceFormat(($out_price - $item->price()) * $ratio);
|
|
|
- return "{$name} count={$count} profit={$profit} = ({$out_price} - {$in_price}) X {$ratio}";
|
|
|
+ $prifit = $out_price - $item->price();
|
|
|
+ $profit_ratio = ncPriceFormat($prifit * $ratio);
|
|
|
+ return "{$name} count={$count} profit_ratio={$profit_ratio}={$prifit}X{$ratio}";
|
|
|
};
|
|
|
|
|
|
$feed_names = [];
|