決済された注文をシリーズに分ける条件を追加する必要がある
アルゴリズムや分割原理を教えてください
シリーズの各閉じた利益を前の利益ではなく、新しい利益にする方法 (5; 5; 5) ?・・・・・・。
算術和算の代わりに、スペースまたはセミコロンとスペース、どちらか好きなほうで文字列に追加します
良いアイデアですね。
あるいは、配列に入れることもできる。
クローズした注文の利益は正しく考慮されますが、クローズ後に前のものに値が追加されます (5; 5+5=10; 10+5=15)
一連のクローズした利益を、前のもの (5; 5; 5) の代わりに新しいものにするにはどうすればいいですか。
一連のクローズドオーダーの中で、買い注文と売り注文、または買い注文のみと売り注文のみが存在することが ある。
// START //
if(LastProfitCL(-1)<0) ProfitColor=Red;
if(LastProfitCL(-1)>0) ProfitColor=LimeGreen;
if(LastProfitCL(-1)==0)ProfitColor=DarkGray;
ObjectCreate("Last Profit", OBJ_LABEL, 0, 0, 0);
ObjectSet("Last Profit", OBJPROP_CORNER, 1);
ObjectSet("Last Profit", OBJPROP_XDISTANCE, 5);
ObjectSet("Last Profit", OBJPROP_YDISTANCE, 15);
ObjectSetText("Last Profit",StringConcatenate("Last Profit: ",DoubleToStr(LastProfitCL(-1),2)),10,"Arial",ProfitColor);
// END START //
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(i=OrdersHistoryTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
if (OrderSymbol()!= Symbol()) continue;
if (OrderMagicNumber()!= magic) continue;
if (OrderType()!= op) continue;
if (op<0 || OrderType()==op) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}
}
return(LastProfit);
}
複雑ですね、もっとシンプルなものはないのでしょうか?
あと、脳みそ沸騰してるから例を挙げてくれない?
これはちょっと複雑ですね。もっとシンプルなものはないのでしょうか?
いや、もっと簡単にはいかないだろう。前回LastProfitCL 関数を使用した際にカウントされた注文も含め、常に全ての注文をカウントします。そして、注文がどんどん増えていくので、利益の額も増えていく。
新しい注文が完了したときに、そのループが途切れるような条件を考えなければならない。
新しい注文がなくなったら、ループが中断されるような条件を作る必要があります。
そこ、正しい考え方です))
そこ、正しい考え方です))
それで?
コンディションは?
それで?
コンディションはどこですか?
というようなものです。
if (op<0||OrderType()==op) {lastprof+=OrderProfit()+OrderCommission()+OrderSwap(); cnt++}
で、過去
cnt 1,2,3 past
cnt 4,5,6 new から cnt new を何らかの方法で差し引かなければならない。
というようなものです。
if (op<0||OrderType()==op) {lastprof+=OrderProfit()+OrderCommission()+OrderSwap(); cnt++}
で、過去
cnt 1,2,3 past
cnt 4,5,6 new から cnt new を何らかの方法で差し引かなければならない。
いや、すでに書いてあるような意味じゃないですよ。
クローズドオーダーの利益計算について教えてください。
例えば
- 一日中
- 赤字
- ラストオーダー
なのか、それとも別の何か?
シリーズを説明する
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
クローズした注文の利益は正しく考慮されますが、クローズ後に前のものに値が追加されます (5; 5+5=10; 10+5=15)
一連のクローズした利益を、前のもの (5; 5; 5) の代わりに新しいものにするにはどうすればいいですか。
一連のクローズドオーダーの中で、買い注文と売り注文、または買い注文のみと売り注文のみが存在することが ある。
// START //
if(LastProfitCL(-1)<0) ProfitColor=Red;
if(LastProfitCL(-1)>0) ProfitColor=LimeGreen;
if(LastProfitCL(-1)==0)ProfitColor=DarkGray;
ObjectCreate("Last Profit", OBJ_LABEL, 0, 0, 0);
ObjectSet("Last Profit", OBJPROP_CORNER, 1);
ObjectSet("Last Profit", OBJPROP_XDISTANCE, 5);
ObjectSet("Last Profit", OBJPROP_YDISTANCE, 15);
ObjectSetText("Last Profit",StringConcatenate("Last Profit: ",DoubleToStr(LastProfitCL(-1),2)),10,"Arial",ProfitColor);
// END START //
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(i=OrdersHistoryTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
if (OrderType()!= op || OrderSymbol()!= Symbol() || OrderMagicNumber()!= magic) continue;
if (op<0 || OrderType()==op) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}
}
return(LastProfit);
}