コーディングのヘルプ - ページ 290

 
mladen:
それは簡単です.

このようなものをEAのstart()手順の最初に置くと、その日にすでに出した損失(または利益)がある金額を超えた場合にEAが動作しないようにすることができます。

double totalProfit=0;

for (int i =OrdersHistoryTotal()-1; i>=0; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;

if (OrderSymbol() != Symbol()) continue;

if (OrderMagicNumber() != someMagicNumber) continue;

if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

totalProfit += OrderProfit()+OrderCommission()+OrderSwap();

}

if (totalProfit < someProfitLossLimit) return(0);

[/PHP]

親愛なるMLADEN様....

上記のコードをありがとうございます....IOU 2クレジット....

[PHP]です。

ダブルtotalProfit=0;

for (int i =OrdersHistoryTotal()-1; i>=0; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

if (OrderSymbol() == Symbol()) continue;

if (OrderMagicNumber() == someMagicNumber) continue;

if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)(オーダータイプ(O))==0)

if (オーダータイプ()==OP_BUY || オーダータイプ()==OP_SELL)

totalProfit += OrderProfit()+OrderCommission()+OrderSwap();

}

if (totalProfit < someProfitLossLimit) return(0);

確認ですが、このコードは、今日の累積損失がsomeProfitLossLimitを超えた場合、特定の通貨ペア とMagicNumberからの注文をそれ以上出さないようにするものですか?

とても早い返信をありがとうございました。

よろしくお願いします。

AZRUL...

 
12BPRO:
MLADEN様へ....

上記のコードに感謝します...。IOU 2クレジット....

double totalProfit=0;

for (int i =OrdersHistoryTotal()-1; i>=0; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

if (OrderSymbol() == Symbol()) continue;

if (OrderMagicNumber() == someMagicNumber) continue;

if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

totalProfit += OrderProfit()+OrderCommission()+OrderSwap();

}

if (totalProfit < someProfitLossLimit) return(0);

[/PHP]

Just to check..... will this code prevent any more orders from a specific currency pair and MagicNumber.... if today's ACCUMULATED LOSS exceed someProfitLossLimit....

Thanks for the very-very fast reply....

best regrads

AZRUL...

はい

これは、決済した注文の累積利益がある金額より少ない場合、それ以上のコード処理を行わないようにするものです。最後の行をこれに置き換えることができます。

[PHP]if (totalProfit < 0 && totalProfit < someProfitLossLimit) return(0);

累積「利益」がマイナスの場合(負けがあった場合)にのみ実行されるようにするため。

 
mladen:
そうですね。

これは、クローズした注文の累積利益がある金額より小さい場合、それ以上のコード処理を阻止するものです。最後の行を次のように置き換えることができます。

if (totalProfit < 0 && totalProfit < someProfitLossLimit) return(0);
累積「利益」がマイナスの場合(負けがあった場合)のみ行われるようにするため

親愛なるMLADEN様...

申し訳ありません。私の説明が不十分だったようです......。

私の意図は、特定の通貨ペア とMagicNumberのAccumULATED LOSSのみを監視するためのコードです....儲かっている利益は含まない....損失だけがカウントされます...

混乱させてすみません。

よろしくお願いします...

AZRUL...

 
12BPRO:
親愛なるMLADEN...

So Sorry Sir...私はあなたのために十分に明確にしていなかったと思います....

私の意図は、特定の通貨ペアとMagicNumberのためにのみ累積損失を監視するためのコードです....儲かっている利益は含まない....損失だけがカウントされます...

混乱させてすみません。

よろしくお願いします。

アズール...

AZRUL

クローズド・オーダーのリストに、Order() profit というファイルがあって、"profit" : 勝った注文にはプラス、負けた注文にはマイナスで表示されます。このコードの平和は、あなたが必要とするものを正確に行います。

 

MLADENさんへ。

Theory is this... if today happens to be a SIDEWAY market, I end up to lose some of the profit (if any) have been made and X$ RISK on my capital....これでは、とてもBAD DAYのトレードに対する防御にはならない・・・・・。

今日の取引から1日あたりX$でRISKすることになるからだ...。

上記のコードでは、その日の利益(もしあれば)をすべて食いつぶしてしまい、さらに私のRISK(資本)も食いつぶしてしまうことになるのです...。

ありがとうございます。

よろしくお願いします...

AZRUL...

 
mladen:
AZRUL Profit can be negative (==loss) Closed otrders list に Order() profit というファイルがあって、"profit" : positive for winning orders and negative for losing trades を保持しています。このコードの平和は、あなたが必要とするものを正確に行います。

親愛なるMLADEN様

上記の提案について、ご教示いただきありがとうございます...

どんな結果が出るか試してみます...。

よろしくお願いします。

AZRUL...

 

MLADEN様へ。

以下のコードでうまくいくでしょうか?

特定の通貨ペア とMagicNumberの累積損失のみを監視する。儲けている利益は含めない....損失だけがカウントされる...

extern double LossAmount = -500.00

...............

int start()

if(LossRisk()<=LossAmount)

return(0);

...............

void LossRisk()

double totalLoss=0;

{

for (int i =OrdersHistoryTotal()-1; i>=0; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

if (OrderSymbol() == Symbol()) continue;

if (OrderMagicNumber() == someMagicNumber) continue;

if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();

}

return(totalLoss);

}

あなたの知識は非常に高く評価されます...

本当にありがとうございます

AZRUL....

 
12BPRO:
MLADEN様へ。

以下のコードで大丈夫でしょうか...。

特定の通貨ペアとMagicNumberの累積損失のみを監視する....儲かっている利益を含まない....損失だけがカウントされます...

extern double LossAmount = -500.00

...............

int start()

if(LossRisk()<=LossAmount)

return(0);

...............

void LossRisk()

double totalLoss=0;

{

for (int i =OrdersHistoryTotal()-1; i>=0; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

if (OrderSymbol() == Symbol()) continue;

if (OrderMagicNumber() == someMagicNumber) continue;

if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();

}

return(totalLoss);

}

[/PHP]

Your Knowledge is highly appreciated...

yours truly

AZRUL....

いいえ、そうではありません。

もし、損失だけを合計したいのであれば、次のように付け加えなければなりません。

&&(OrderProfit()+OrderCommission()+OrderSwap()<0)) とします。

というわけで、関数は以下のようになります。

[PHP]void LossRisk()

double totalLoss=0;

{

for (int i =OrdersHistoryTotal()-1; i>=0; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

if (OrderSymbol() == Symbol()) continue;

if (OrderMagicNumber() == someMagicNumber) continue;

if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)(オーダータイプ(O))==0)

if (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0)

totalLoss += OrderProfit()+OrderCommission()+OrderSwap();

return(totalLoss);

}

 

親愛なるMLADEN様

私は現在、M15タイムフレームで動作している私のEAでこのコードを使用しています....

M15の時間枠の後に新しい注文を出します。

bool AddP()

{int _num=0; int _ot=0;

for (int j=0;j<OrdersTotal();j++)

{if(OrderSelect(j,SELECT_BY_POS)==true && OrderSymbol()==Symbol() && OrderType()<3 && ((OrderMagicNumber()==Magic) || Magic==0))

{

_num++;if(OrderOpenTime()>_ot) _ot=OrderOpenTime();

}

}

if(_num==0) return(true);

if(_num>0 && ((Time[0]-_ot))>0)

return(true);

else return(false);

}

前の注文から5分経過するごとに注文を出すように、このコードを変更してもらえないでしょうか。

M15のタイムフレームでやっているのですが......。

たくさんの質問を送ってしまい、ご迷惑をおかけしました。

よろしくお願いします。

AZRUL...

 
mladen:
いいえ、そうではありません。

負け分だけを加算する場合は、以下のようになります。

&&(OrderProfit()+OrderCommission()+OrderSwap()<0)) を追加しなければなりません。

というわけで、関数はこんな感じになります。

void LossRisk()

double totalLoss=0;

{

for (int i =OrdersHistoryTotal()-1; i>=0; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

if (OrderSymbol() == Symbol()) continue;

if (OrderMagicNumber() == someMagicNumber) continue;

if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)

if (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0)

totalLoss += OrderProfit()+OrderCommission()+OrderSwap();

}

return(totalLoss);

}

親愛なるMLADEN様。

あなたは物事を成し遂げるためにあなたの方法を知っているこの辺り....

私はあなたからいくつかの応答を得るために非常に非常に喜んでいるSIR....

もし私がお返しにできることがあればPMしてください...コーディングを除いて...。

ありがとうございます。

よろしくお願いします。

AZRUL...