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

 
Alexey Viktorov:

そのうちの一人が私です。それに、C#やC++を勉強したこともないし、OOPが何かも知らない。

mql5と違うのはOrderSend()関数だけで、あとは覚えていない関数がいくつかあるという単純な事実を理解してください。もう一つの重要な違いは、インジケータ・バッファの インデックス付けの方向です。ただし、すぐに解決できますが、新機能に慣れることが先決です。また、指標値の取得は従来通りです。Kovalevの本は読んでいないので、中身はわかりませんが、この本に載っている解答が、アップデートされたMetaEditor mql4を使って書けないということはないでしょう。

かっこいい ))))手続き型のFortranとBasicを積んでいる私には、うまくいきませんでした。このチュートリアルは、よく構成され、十分に明確で、クリエイターがもちろん学生を必要とするならば、本当に基礎として活用できるものです。残念ながら他にはないんです。PLOはまだ物足りないので、記事を読ませてもらっています。 更新されたMT4ターミナルでのチュートリアルはかなり試しています。データ型に関する指摘が多く、与えられない。 コンパイラは厳密なチェックでもエラーは出なかった。

 
Valeriy Yastremskiy:

かっこいい ))))手続き型のFortranやBasicを積んだまま、手に入らなかったのですが。良いチュートリアル、よく構成され、十分に明確で、クリエイターがもちろん学生を必要とするならば、本当に基礎として利用することができる。残念ながら他にはないんです。PLOはまだ物足りないので、記事を読ませてもらっています。 更新されたMT4ターミナルでのチュートリアルはかなり試しています。データ型に関する指摘が多く、与えられない。コンパイラは厳密なチェックでもエラーは出なかった。

ここでは、OOPについての私の考えを述べます。そして、このトピックを最初から全部読んでも損はないでしょう。

ООП для школьников.
ООП для школьников.
  • 2019.10.04
  • www.mql5.com
======================================================================================================================== В этой теме будет нескольк...
 

ごあいさつ注文を選択 した後、どのような理由でチケットが変更されるのかが不明なので、アドバイスをお願いします。コード

      for(int i=OrdersTotal()-1; i>=0; i--){
         if(OrderSelect(i ,SELECT_BY_POS, MODE_TRADES)){
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_BUYSTOP){
               Print("111  OrderTicket() ", OrderTicket(), "  OrderType() ", StringType(OrderType()));
               temp=OrderTicket();
               if( OrderOpenPrice()>start_bid
               +((MathCeil( (Bid-start_bid)/(bs_distance*Point) )+bs_orders+Orders("bs")+1)*bs_distance*Point) ){
                  Print("222 OrderDelete bs Bid ", Bid, "  OrderOpenPrice() ", OrderOpenPrice()); 
                  if(!OrderDelete(OrderTicket(), clrBlack)){
                     Print("333 OrderDelete bs Bid ", Bid, "  OrderTicket() ", OrderTicket(), "  OrderType() ", StringType(OrderType()));
                  }
               }
            }
         } 
      }

マーケットには、BUYSTOPチケット10とBUYチケット9の 2つの注文がある。

ログです。


 
Alexey Viktorov:

ここでは、OOPについての私の考えを述べます。そして、このスレッドを最初から全部読んでも損はないでしょう。

ありがとうございます、同感です))))

 
Andrey Sokolov:

ごあいさつ注文を選択 した後、どのような理由でチケットが変更されるのかが不明なので、アドバイスをお願いします。コード

マーケットには、BUYSTOPチケット10とBUYチケット9の 2つの注文がある。

ログです。


自分で書いた関数の1つが、注文(例えばOrders("bs"))を通過して、OrderSelect()を再実行しているのだと思います。

 
Igor Zakharov:

自作関数の1つがオーダーを通過し(例えばOrders("bs"))、それに応じてOrderSelect()を再実行すると仮定します。送信ループに戻る時点で、すべてのデータはそこで最後に選択したオーダーについて与えられます。

しゃい

 
Andrey Sokolov:

ごあいさつ注文を選択 した後、どのような理由でチケットが変更されるのかが不明なので、アドバイスをお願いします。コード

マーケットには、BUYSTOPチケット10とBUYチケット9の 2つの注文がある。

ログです。


勤務先コードが掲示されているコードと一致しない。

Print("222 OrderDelete bs Bid ", Bid, "  OrderOpenPrice() ", OrderOpenPrice());

このコードのどこに "OrderTicket() "が出力されているか

注文の選択を含む他のユーザー機能の呼び出しに注意してください。

 
Alexey Viktorov:

あなたは正しい場所に来ています。ここでは、新しいmql4のドキュメントを参考に、mql4を正しく行うためのヒントを紹介します。

もし、何かを書くのが難しいと感じたら、何を書いて、何を失敗したのか、具体的に質問してください。ただ、1キロもあるコードを1行でも理解できないようでは誰も読まないということは覚えておいてください。もちろん、そうではありません。

あなたは、私の質問が意図した通りの人です。というのも、あなたのリクエストに基づき、私の問題を明確に示すために、テスター用のMql4コードを短くしました。しかし、残念ながらアルテムはそれを理解していなかった。

私の問題を解決するために、コードを変更していただけると大変ありがたいです。もう一度、その本質をお伝えします。

各注文が 終了したとき(同時に多くの注文がある)、終了した注文のいくつかのパラメータをPrint()で出力する必要があります。とても上手にできるようになりました。しかし......ひとつだけ、私の心では解決しきれない問題があるのです。一部の注文は、同じティック、同じ 価格でストップで決済されます。この場合、プログラムは最初に閉じた注文を無視 し、 最後に閉じた注文だけを Print()で表示します。しかも、1枚目以降は印刷されない。

Q: .

上に書いたようなケースで、最初の注文がストップで 閉じた後でも、プログラムに()を表示させるには、どのような言語構成を使えばよいでしょうか?

int H;
int L;
int TP;  
int start()
{
int Ht = OrdersHistoryTotal();
if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))                                             
if (TP!=OrderTicket( ))
{
Print("---------------------------------------------------------------=",TimeToString(OrderOpenTime()) );
TP=OrderTicket( );
}

if (TimeCurrent()==1262598040)
if (H==0)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,1.6217,1.60919,"300",10 );
H=1;
}
if (TimeCurrent()==1262601140)
if (L==0)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,1.62199,1.61758,"300",10 );
L=1;
}
return(0);


 
ANDREY:

あなたは、私の質問が意図した通りの人です。というのも、あなたのリクエストに基づき、私の問題を明確に示すために、テスター用のMql4コードを短くしました。しかし、残念ながらアルテムはそれを理解していなかった。

私の問題を解決するために、コードを変更していただけると大変ありがたいです。もう一度、その本質をお伝えします。

各注文 (一度にたくさん開く)を閉じるとき、閉じた注文のいくつかのパラメータを印刷()する必要があります。とても上手にできるようになりました。しかし......ひとつだけ、私の心では解決しきれない問題があるのです。一部の注文は、同じティック、同じ 価格でストップで決済されます。この場合、プログラムは最初に閉じた注文を無視 し、 最後に閉じた注文だけを Print()で表示します。 しかも、1枚目以降は印刷されない。

Q: .

上記のようなケースで、最初の注文がストップで 終了した後でも、アプリケーションに印刷()を印刷させるには、どのような言語構文を使用すればよいでしょうか。


あなたのコードは、2つの売りポジションをそれぞれ厳密に指定された時間にオープンし、許可された場合に最後のポジションオープンの時間を表示する以外に何をするのですか?それだけです。コードの動作の "奇跡 "につながることができる初期化されていない変数、および非常に、非常に古いstart()ハンドラ、クモの巣の年とほこりの多い棚から引き出された、古代のハンドラと市場で(いつかあなたが何かを販売したい)バリデータを見逃すことはありません使用 - それは間違ったプログラムの種類と言うでしょう。

 
ANDREY:

あなたは、私の質問が意図した通りの人です。というのも、あなたのリクエストに基づき、私の問題を明確に示すために、テスター用のMql4コードを短くしました。しかし、残念ながらアルテムはそれを理解していなかった。

私の問題を解決するために、コードを変更していただけると大変ありがたいです。もう一度、その本質をお伝えします。

各オーダーを クローズするとき(同時にたくさんのオーダーが開かれている)、クローズしたオーダーのいくつかのパラメータをプリント()する必要があります。とても上手にできるようになりました。しかし......ひとつだけ、私の心では解決しきれない問題があるのです。一部の注文は、同じティック、同じ 価格でストップで決済されます。この場合、プログラムは最初に閉じた注文を無視 し、 最後に閉じた注文だけを Print()で表示します。 しかも、1枚目以降は印刷されない。

Q: .

上に書いたようなケースで、最初の注文がストップで 決済された後でも、プログラムに()を表示させるには、どのような言語構造を使えばよいでしょうか?

アルテムの答えは覚えていない。彼の記事にあるコードはすべて多端子か、mql5用とmql4用の2つのバージョンがあります。mql4で確認したところ、すべて正常に動作し、ストップやテイクによるクローズも検出され、間違いはありませんでした。

たしかに、これらの記事は難解ですが、私より年上でなければ、その価値はあります。そして私は、プログラマーとしては卑猥なほど年をとっている。

もう1つの方法は、よりシンプルですが、動作がかなり遅くなります。オーダーチケットを配列に書き、この配列を使ってオーダーを選択し、オーダー終了時刻を確認する。0より大きい場合は、閉じていることを意味します。クローズドオーダーのコメントに "sl "が含まれている場合、そのオーダーがストップでクローズされたことを意味します。注文が終了した場合は、配列から削除される。または、配列が完了した後、残りの未決済注文を補充する。イマジネーションは全般的に飛んでいます。

どのオプションを選ぶかは、あなた次第です。そして、コバレフの教科書に関する私の投稿をいくつか読んでみてください。チュートリアルではint start()と書かれていますが、アップデートされたmql4ではExpert Advisorではvoid OnTick()と書かなければなりません。

インジケーターやスクリプトについては、ドキュメントを参照してください。ところで、アップデートされたmql4では、Sergeyがこのチュートリアルを書いたときよりもずっと簡単にインジケータを書くことができるようになったんだ。