// проверяем доступность свободных средствif(AccountFreeMarginCheck(Symbol(),OP_BUY,OpenLot)<=0 || GetLastError()==134)
{
Print("It is impossible to open the order Buy, not enough money.");
return(0);
}
// проверяем доступность свободных средствif(AccountFreeMarginCheck(Symbol(),OP_SELL,OpenLot)<=0 || GetLastError()==134)
{
Print("It is impossible to open the order Sell, not enough money.");
return(0);
}
ロボットがポジションを持ち、次のティックで損切りを前の安値に変更します。
またはこのエラーを取り除くには
皆さん!ポジションを開くのに十分なマージンがない場合、EAのテストを停止するコードを教えてください。ありがとうございました。
AccountFreeMarginCheck()が特定の値(例えば、AccountFreeMarginの50%未満)より小さい場合 - 取引関数から終了、空のループはほとんどロードされていないため、テストはすぐに終了します。
正直なところ、まだ未熟なので、このようなコードを見つけたのですが、修正する方法を教えてください。
if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= 0.0) return (-1);
if(GetLastError()== 134/* NOT_ENOUGH_MONEY */) return (-2);
return (l_lots_4);
。
この条件の書き方 - 新しいローソク足が表示されるまで、新規注文を変更しない。
正直なところ、まだ未熟なので、このようなコードを見つけたのですが、修正する方法を教えてください。
if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= 0.0) return (-1);
if (GetLastError() == 134/* NOT_ENOUGH_MONEY */) return (-2);
return (l_lots_4);
編集する必要はなく、そのままで大丈夫です。変数を自分の名前に置き換えるだけなら別ですが。
しかし、より低いリスクを必要とする場合、 if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= AccountFreeMargin()*0.5) return (-1); - この場合、指定ロットでのポジション開設 後にフリーマネーが50%以下残っていれば、 return (-1) となります。
皆さん!ポジションを開くのに十分なマージンがない場合、EAのテストを停止するコードを教えてください。
ありがとうございました。
ヒントをお願いします。リストの2番目の注文が選択され、その後削除される(保留)コードの一部を記述する必要があります。OrderSelect(1, SELECT_BY_POS, MODE_TRADES) の場合、4051 を返します。