//+------------------------------------------------------------------+if(OrderMagicNumber()==Mn) // а ордер где-то был выбран ранее?
{
operation=0; // неиспользуемая переменная
{ // лишняя скобкаfor(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS); // нет проверки на результат выделения ордера в списке, и если ордер не выбран, то всё последующее вызовет ошибкиint type = OrderType();
bool result = false;
switch(type)
{ // К СВЕДЕНИЮ - ВСЕ ОПЕРАТОРЫ break ЗАКОММЕНТИРОВАНЫ, А ЗНАЧИТ - ВСЕ СТРОКИ КОДА ОПЕРАТОРА switch ВЫПОЛНЯЮТСЯ ВСЕГДАcase OP_BUYSTOP : // Если выбран отложенный BuyStop, то пытаемся его закрыть как позицию, что вызовет ошибку
result = OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red); //break;case OP_SELLSTOP : // Если выбран отложенный SellStop, то пытаемся его закрыть как позицию, что вызовет ошибку
result = OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red); //break;// Независимо от типа выбранного ордера (отложенный или позиция) удаляем его как отложенный, что для позиции вызовет ошибку
result = OrderDelete(OrderTicket()); //break;
}
}
} // лишняя скобка
}
//+------------------------------------------------------------------+
その結果、あなたのコードはこうなります、つまり、このコードと同等です。
//+------------------------------------------------------------------+if(OrderMagicNumber()==Mn) // а ордер где-то был выбран ранее?
{
bool result=false;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i, SELECT_BY_POS)) {}
result = OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, clrRed);
result = OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, clrRed);
result = OrderDelete(OrderTicket());
}
}
//+------------------------------------------------------------------+
typedefdouble(*CenBr)(string,int,int);CenBr cn_br[4];//глобально//В Ините пытюсь сохранить указатель на функцию iOpen и ничего не выходит
cn_br[0]=iOpen;
создаём массив double BarOCLH[1000][2][4]
далее сохраняем цену открытия 0 вого бара дневного таймфрейма
BarOCLH[0,0,0]=iOpen ();
далее сохраняем цену открытия 0 вого бара часового таймфрейма
BarOCLH[0,1,0]=iOpen ();и т.д ну а дальше критерируйте с каким столбцом работать
午後
多通貨のExpert Advisorで、オープンポジションがトリガーされたときに、利益に対して発注された保留中の注文を 閉じる必要があります。
今現在、利益確定の保留注文を決済すると、全通貨の保留注文が決済されます。
ある通貨ペアに関連する保留中の注文だけが決済され、残りの保留中の注文は未決済のままとなるようにコードを変更するにはどうすればよいですか?
このコードのどこを変えればいいのでしょうか?
このコード内のMnは、BUY_STOPまたはSELL_STOPの保留中の注文のマジックナンバーです。
ロジックとしては、Take Profitでオープンポジションを決済すると、このマジックナンバーが残り、これを削除するコマンドが実行されることになっています。
これは、各ペアをテストするときに有効です。ただし、他の通貨を扱う場合は、すべてのペアで発注された注文が削除されます。
できれば、助けてください。
この問題で悩む人はいないはずだと理解していますが、もしかしたら誰かが既成のテンプレートを持っているかもしれませんね。
とてもありがたいことです。
私は、あなたがそこで何を台無しにしたのか理解するために、エディタにコードをコピーして、通常のスタイリング(Ctrl+<)を行う必要がありました。
そこで:そこでごちゃごちゃ言っていたことをコードにコメントしました。
その結果、あなたのコードはこうなります、つまり、このコードと同等です。
今、問いかける--そこから何を得ようとしたのか?
あなたがそこで何を台無しにしたかを理解するために、私はエディタにコードをコピーして、適切なスタイリング(Ctrl+<)を行う必要がありました。
So: そこで台無しにしたものをコードにコメントしました。
その結果、あなたのコードはこうなる、つまり、このコードと等しくなるのです。
今、問いかける--そこから何を得ようとしたのか?
OKです。
をご覧ください。
ポジションがオープン(OP_BUYまたはOP_SELL )されると、同時にそれぞれ保留の注文(OP_SELLSTOPとOP_BUYSTOP)を出します。
テイクプロフィットで建玉を決済する場合、それに対応する保留注文はキャンセルされなければなりません。このアルゴリズムは、すべての通貨ペアに適用されます。
他の通貨で発注した保留中の注文はそのままにしておきます。
皆さん、ごきげんよう。
MTF_RSIが切り替わっているインジケータがあります。
チャート切り替え時にTimeFrameを自動的に変更する設定は可能でしょうか?
のようなものです。
皆さん、ごきげんよう。
MTF_RSIが切り替わっているインジケータがあります。
チャート切り替え時にTimeFrameを自動的に変更する設定は可能でしょうか?
こんな感じ
構造体や多次元 配列を作り、目的の次元で実行させ、基準を満たせば1列(各列はそれぞれの時間軸を担当)、満たさなければ別の列で作業、以上です。プログラム自体はすべてのタイムフレームに一度にアクセスできるので、お書きになったことは可能ですが、実装は非常に大掛かりなため、フォーラムではこの分量を見ることができません。
構造体または多次元配列の 作成
ありがとうございます。
なぜこのコードは動かないのか?
簡単な機能で動作するのですが、何か変なんです。
ありがとうございます。
私に言ってるの?
Yes to you.すべてのループ、すべての関数において、細部まで時間軸を意識してゲームを進めていく必要があります。そのため、多次元配列の 利用を推奨しています。
Yes to you.すべてのループ、すべての関数において、細部まで時間軸を意識してゲームを進めていく必要があります。そのため、多次元配列の 利用を推奨しています。
この問題は、もっと簡単に解決できます。