MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 455

 

こんにちは。


ロボットは一定のシグナルに基づいて注文を開き、閉じるが、注文を閉じた後、同じ方向で1つだけ保留の注文を出す必要性がある。

すなわち、保留中の注文が発注され、トリガーされ、クローズされた後、他に何もする必要がなく、ロボットは通常の注文を開くためのシグナルを待っているのです。


どのように実装すればよいか教えてください。

 
Snower: ごきげんよう。

ロボットは特定のシグナルに基づいて注文をオープンしたりクローズしたりするので、ロボットが同じ方向に保留中の注文を出す必要があるのですが、1つだけです。

つまり、保留中の注文が発注され、トリガーされ、決済された後、何もする必要がなく、ロボットは通常の注文を開くためのシグナルを待っているのです。

どのように実装すればよいか教えてください。

それはとてもシンプルなことです。2つのforループで、1)注文の履歴と2)進行中の注文を 分析します。分析に基づいて状況を把握し、条件付きif文を使って目的のアクションを実行する。それとも、もっと詳細が必要ですか?

 
STARIJ:

というくらいにシンプルです。2つのforループで、1)注文の履歴と2)進行中の注文を分析します。分析に基づいて状況を把握し、条件付きif文を使って必要なアクションを実行する。それとも、もっと詳細が必要なのか?

詳しく教えていただけるとありがたいです。

 
Snower: 詳しく教えていただけるとありがたいです。

どの部分を綴ればいいのか、あるいは全部を綴ればいいのか。

 
LRA:

どの部分を書けばいいのか、それとも全部?

ループ自体、ifを設定することができます。

 
Vladislav Andruschenko:
)))10年間仕事をしてきて、そんなことを思ったことは一度もありません。厳しい状況が好きなんですね。

さぞかし

 

このコードの問題点は何ですか? 1つの取引を開くときと2つの取引を開くときがあるのですか?

1ペアにつき最大1トレードのはずなのですが、どこかで失敗してしまったようです。


...
if(!Orderex(_Symbol))
{
   OrderSend(NULL,OP_SELL,lot,Bid,30,Bid+stop*Point,Bid-take*Point,NULL,magicf,0,clrRed);
}
...
bool Orderex(string symbol)
{
   for(int i=OrdersTotal(); i>0; i--)
      {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==symbol && OrderMagicNumber()==magicf) return true;
      
      
      
      }


   return false;
}
 
Roman Sharanov:

このコードの問題点は何ですか? 1つの取引を開くときと2つの取引を開くときがあるのですか?

1ペアあたり最大1トレードのはずなのですが、どこかで失敗してしまったようです。


for(int i=OrdersTotal()-1; i>=0; i--)
 
Konstantin Nikitin:

そして、さらに興味深いのが、これです。

for(int i = OrdersTotal(); i-- >=0;)
 
あ~、そうそう、アカウントはゼロからです :)