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

 
igrok333:

がこのコードを書きました。

とメタ編集者はつぶやきます。



なぜ交尾するのか?


#プロパティの厳密さ

prは 初期化されていますか?

 
igrok333:

がこのコードを書きました。

とメタ編集者はつぶやきます。
なぜ交尾するのか?


#プロパティの厳密さ

553行目で値を持たない変数を使用することが可能だとはっきり書いてあります。bool pr=false; と書いてみてください。これでコンパイラは騙せますが、きちんとチェックしたほうがいいでしょう。結局、注文タイプがpending orderの場合、値なしでprが出ることになるのですが...。

 
Roman Sharanov:

を前のものに、そしてmql4からここにあるのはOnTick()関数 でしょうか?

mql4言語の記事で質問されていたので、すぐにTime[0]に気がつきました。

よく見てみると、ユーザー定義配列であることがわかる。

そして、以下はドキュメントからのコメントです。

備考

この関数は同期呼び出しを採用しています。つまり、この関数が呼び出される前にチャートキューに入れられたすべてのコマンドの実行を待つので、この関数は時間がかかるかもしれません。チャート上で多数のオブジェクトを扱う場合は、この点に留意する必要があります。

1つの価格座標のオブジェクトは複数の値を持つことができるため、行番号を指定する必要がある。本機能は、以下のオブジェクトにのみ適用可能です。

  • トレンドライン(OBJ_TREND)
  • 角度によるトレンドライン(OBJ_TRENDBYANGLE)
  • ギャンライン (OBJ_GANNLINE)
  • 等距離チャンネル (OBJ_CHANNEL) - 2行
  • 線形回帰チャンネル(OBJ_REGRESSION) - 3行
  • 標準偏差チャンネル(OBJ_STDDEVCHANNEL) - 3行
  • 矢印のある線 (OBJ_ARROWED_LINE)


 
Artyom Trishkin:

prは 初期化されていますか?

初期化する必要があるのでしょうか?宣言するだけで十分だと思うのですが。
宣言時にゼロで初期化されるんじゃなかったっけ?
 
STARIJ:

553行目には、値を持たない変数を使用することが可能であることが明確に書かれています。bool pr=false; と書いてみてください。これでコンパイラは騙せますが、何事もきちんとチェックした方が良いですね。結局、注文タイプが保留注文の場合、値がなくてもprがつくことになるのですが...。

保留中の注文について思い出させてくれてありがとう)



このやり方で良いのでしょうか?

 void zakritj_vse_sdelki()
 {
 bool pr;
 for (int i=OrdersTotal()-1; i>=0; i--)       
   {                                        
   if(OrderSelect(i,SELECT_BY_POS)==true)
      {  
         pr=false; 

         if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 30 );                              
         if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 30 );
         
         if (pr==false) Print("закрытие ордера ", OrderSymbol() ," завершилось с ошибкой #",GetLastError());
         if (pr==true) Print("ордер ", OrderSymbol() , " ЗАКРЫТ");
       }
    }
  }  
 
igrok333:

ポーズを思い出させてくれてありがとうございます)
このやり方で良いのでしょうか?

if (pr==false) is equivalent to if (!pr)
if (pr==true) is equivalent to if (pr)

印刷の 代わりにアラートを使って います。ジャーナルを開かなくてもすぐに表示されるはずです。また、余分な情報はありません

 
Вместо
if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 30 );
if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 30 );
короче
if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), Bid, 30 );
if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), Ask, 30 );
или просто
pr=OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 30 );


 
STARIJ:

if (pr==false) は if (!pr) と同じです。
if (pr==true) は if (pr) と同じです。

印刷の代わりにアラートを使って います。ジャーナルを開かなくても、画面に即座に表示されます。また、余分な情報はありません

実際にはコードにprを 配置するという話です))
 
Дед пенсионер:
OrderClosePrice()はこのように書けばいいのでしょうか?

取引終了後、OrderClosePrice()を取得する。
 
igrok333:
OrderClosePrice()はこのように書くことができるのでしょうか?取引終了後、OrderClosePrice()を受け取る。

できます。でも、気をつけてください。オープンポジションの 場合は、終値が返されます。対応:買い:Bid、売り:Ask