MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 852 1...845846847848849850851852853854855856857858859...1953 新しいコメント Вадим Ярош 2019.05.21 09:48 #8511 ウェブサイトにアクセスできない jaffer wilson 2019.05.21 10:28 #8512 開発者の皆さん、こんにちは。 任意のストラテジーテスターをカスタム日付または任意の日付オプションで表示する 画像をご覧ください。 OnInit()関数でプログラムの開始日と終了日の値を取得したいのですが。 どうすれば入手できますか? Sergey Voytsekhovsky 2019.05.21 11:19 #8513 Artyom Trishkin:ループ全体を関数にして、見つかればバー番号を、見つからなければ WRONG_VALUE を返します。こんにちは。昨日の問題のiCustomの作業は終了したようです。すべて関数の形にし、制御には「コメント」と「印刷」を使いました。 このExpert Advisorは、iCrossADインジケータの上下矢印のシグナルをキャッチし、BuyまたはSellコマンドに変換して、将来のプログラムで使用することを目的としています。 私は少ししか経験がないので、批判はしないでください。しかし、理にかなった批判やアドバイスをお願いします。 実は、このためにと記事を書きました。EAとインジケータのファイルを添付、コードは以下。 //+------------------------------------------------------------------+ //| Test_iCusom.mq5 | //| Copyright 2018, MetaQuotes Software Corp. | //| https://mql5.com/ru/users/artmedia70 | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://mql5.com/ru/users/artmedia70" #property version "1.00" #property description "" #property strict //--- includes #include <DoEasy\Engine.mqh> #include <Trade\Trade.mqh> #include <Trade\PositionInfo.mqh> #include <Trade\SymbolInfo.mqh> //--- enum Indicator_Direction { Direction_BUY, Direction_SELL, Direction_FLAT }; //--- input string Inp_param_indi_iCrossAD = "Input parameters indicator iCrossAD";//----- "Внешние параметры индикатора iCrossAD" ----- input uint InpPeriodFind = 400; // Bars for calculate input uint InpUnheckedBars = 2; // Unchecked bars input uint InpPeriodIND = 21; // CCI period //--- global variables CEngine engine; CTrade trade; CPositionInfo apos; CSymbolInfo asymbol; int CrossAD; //Хэндл индикатора iCrossAD double Buf_Arrow_Sell[], //Массив буфера для приема значений последних стрелок ВНИЗ из индикатора iCrossAD Last_Arrow_Sell_volume, //Переменная для записи значения цены последней стрелки ВНИЗ индикатора iCrossAD Last_Arrow_Sell_index; //Переменная для записи значения индекса свечи последней стрелки ВНИЗ индикатора iCrossAD datetime Last_Arrow_Buy_time; //Переменная для записи времени стрелки double Buf_Arrow_Buy[], Last_Arrow_Buy_volume, Last_Arrow_Buy_index; datetime Last_Arrow_Sell_time; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { ArraySetAsSeries(Buf_Arrow_Buy, true); ArraySetAsSeries(Buf_Arrow_Sell, true); //--- CrossAD = iCustom(asymbol.Name(), _Period, "iCrossAD",InpPeriodFind,InpUnheckedBars,InpPeriodIND); if (CrossAD == INVALID_HANDLE) { Print("Не удалось создать описатель индикатора iCrossAD!"); return(INIT_FAILED); } else Print("Хендл iCrossAD = ",CrossAD); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- delete objects ObjectsDeleteAll(0,"",-1); Comment(""); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { string direction = "no information"; switch(iCustom_iCrossAD(InpPeriodFind)) { case Direction_BUY: direction = "BUY"; break; case Direction_SELL: direction = "SELL"; break; case Direction_FLAT: direction = "FLAT"; break; case WRONG_VALUE: direction = "no information"; break; } Comment("-------------------------", "\n Last_Arrow_Buy_volume = ",Last_Arrow_Buy_volume, "\n Last_Arrow_Buy_index = ",Last_Arrow_Buy_index, "\n Last_Arrow_Buy_time = ",Last_Arrow_Buy_time, "\n ---------------------- ", "\n Last_Arrow_Sell_volume = ",Last_Arrow_Sell_volume, "\n Last_Arrow_Sell_index = ",Last_Arrow_Sell_index, "\n Last_Arrow_Sell_time = ",Last_Arrow_Sell_time, "\n ---------------------- ", "\n Indicator_Direction = ",direction ); } //+------------------------------------------------------------------+ int iCustom_iCrossAD(uint PeriodFind) { Indicator_Direction direct = Direction_FLAT; if (CopyBuffer(CrossAD, 1, 0, PeriodFind, Buf_Arrow_Buy) != PeriodFind) { Print("НЕ удалось правильно скопировать данные из 1-го буфера индикатора iCrossAD, error code %d",GetLastError()); return(WRONG_VALUE); } for(int n=0; n<(int)PeriodFind; n++) { if(n==0) Print("Last_Arrow_Buy_index n==",n," Last_Arrow_Buy_time = ",iTime(_Symbol,0,n)); if(Buf_Arrow_Buy[n]==EMPTY_VALUE) Print("Last_Arrow_Buy_index n==",n," Last_Arrow_Buy_time = ",iTime(_Symbol,0,n)); if(Buf_Arrow_Buy[n]!=EMPTY_VALUE) { Last_Arrow_Buy_volume = iOpen(_Symbol,_Period,n); Last_Arrow_Buy_time = iTime(_Symbol,0,n); Last_Arrow_Buy_index = n; Print("Last_Arrow_Buy_volume = ",Last_Arrow_Buy_volume,", Last_Arrow_Buy_index = ",Last_Arrow_Buy_index,", Last_Arrow_Buy_time = ",Last_Arrow_Buy_time); break; } } if (CopyBuffer(CrossAD, 2, 0, PeriodFind, Buf_Arrow_Sell) != PeriodFind) { Print("НЕ удалось правильно скопировать данные из 2-го буфера индикатора iCrossAD, error code %d",GetLastError()); return(WRONG_VALUE); } for(int n=0; n<(int)PeriodFind; n++) { if(n==0) Print("Last_Arrow_Sell_index n==",n," Last_Arrow_Sell_time = ",iTime(_Symbol,0,n)); if(Buf_Arrow_Sell[n]==EMPTY_VALUE) Print("Last_Arrow_Sell_index n==",n," Last_Arrow_Sell_time = ",iTime(_Symbol,0,n)); if(Buf_Arrow_Sell[n]!=EMPTY_VALUE) { Last_Arrow_Sell_volume = iOpen(_Symbol,_Period,n); Last_Arrow_Sell_time = iTime(_Symbol,0,n); Last_Arrow_Sell_index = n; Print("Last_Arrow_Sell_volume = ",Last_Arrow_Sell_volume,", Last_Arrow_Sell_index = ",Last_Arrow_Sell_index,", Last_Arrow_Sell_time = ",Last_Arrow_Sell_time); break; } } if(Last_Arrow_Buy_index < Last_Arrow_Sell_index)direct = Direction_BUY; else if(Last_Arrow_Buy_index > Last_Arrow_Sell_index)direct = Direction_SELL; else direct = Direction_FLAT; return(direct); //return(WRONG_VALUE); } //+------------------------------------------------------------------+ ファイル: Test_iCustom.mq5 14 kb iCrossAD.mq5 49 kb Alexandr Spravchikov 2019.05.21 11:48 #8514 こんにちは、私のExpert Advisorには、他の注文がトリガーされたときに保留中の注文を削除する 機能があります。この機能を無効にするには、外部パラメータにどのように記述すればよいのでしょうか?ありがとうございました。 ファイル: ths42o20.txt 1 kb MaxPick 2019.05.21 15:09 #8515 こんにちは。 MT4からMT5へインジケータを変換しました。インジケータを追加フィルタとして使用したい。 私はMT5しか勉強していません。しかし、エラーを見つけることができません。私のМТ4とМТ5の反省点は違う。 専門家にお願いがあるのですが、*.mql5ファイルのエラーを見つけるのを助けてください。 ソースコードを添付します。 とても、ありがたいことです。 ファイル: ReVoIn.mq4 4 kb ReVoIn.mq5 11 kb Sergey Voytsekhovsky 2019.05.21 23:14 #8516 Priffekt: こんにちは、私は私のEAで他の注文がトリガーされたときに保留中の注文を削除する 関数を持っています。この機能を無効にするには、外部パラメータにどのように記述すればよいのでしょうか?ありがとうございました。DeleteOppositeOrders(); void DeleteOppositeOrders() { bool fd, fep1, fep2; fep1=ExistPosition(1); fep2=ExistPosition(2); for (int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()) { fd=False; if (OrderType()==OP_BUYSTOP && OrderMagicNumber()== Magik) { if (fep2) fd=OrderDelete(OrderTicket()); } if (OrderType()==OP_SELLSTOP && OrderMagicNumber()== Magik) { if (fep1) fd=OrderDelete(OrderTicket()); } if (fd && UseSound) PlaySound(NameFileSound); } } } } bool ExistPosition(int mn) { bool Exist=False; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()== Magik) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { Exist=True; break; } } } } return(Exist); } これはあなたのコードです、このように添付するのがよいでしょう。 Sergey Voytsekhovsky 2019.05.21 23:23 #8517 もちろん、私はアドバイザーにはあまり向いていないのですが、この仕事は難しくなさそうです。 私はあなたのコード自体には触れないことに注意してください、私(ダミー)にとってさえ、あなたの関数がvoid型であるという事実から始まる多くの論争があります。 この型は、関数が値を返さない ことを示すか、関数パラメータとしてパラメータの不在を示すために使用されます。そして、コードの最後にreturn(Exist)がありますね。 入力変数を宣言し、それを関数のパラメータとして書き、'この変数をFalseにした場合、関数を終了させる。 Sergey Voytsekhovsky 2019.05.21 23:33 #8518 input bool On_Off = true; DeleteOppositeOrders(On_Off); void DeleteOppositeOrders(bool on_off) { if(on_off==false)return; bool fd, fep1, fep2; fep1=ExistPosition(1); fep2=ExistPosition(2); for (int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()) { fd=False; if (OrderType()==OP_BUYSTOP && OrderMagicNumber()== Magik) { if (fep2) fd=OrderDelete(OrderTicket()); } if (OrderType()==OP_SELLSTOP && OrderMagicNumber()== Magik) { if (fep1) fd=OrderDelete(OrderTicket()); } if (fd && UseSound) PlaySound(NameFileSound); } } } } bool ExistPosition(int mn) { bool Exist=False; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()== Magik) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { Exist=True; break; } } } } return(Exist); } Sergey Voytsekhovsky 2019.05.21 23:38 #8519 Priffekt: こんにちは、私は自分のEAで、他の注文がトリガーされたときに保留中の注文を削除する 機能を持っています。この機能を無効にすることを外部パラメータに規定するにはどうしたらよいですか。ありがとうございました。コードのテキストにあるすべてのFalseとTrueを検索してください。falseとtrueに置き換えてください。この言語は大文字と小文字が区別されます。 Alexandr Spravchikov 2019.05.22 03:06 #8520 Sergey Voytsekhovsky:コードのテキストにあるすべてのFalseとTrueを検索してください。falseとtrueに置き換えてください。この言語は大文字と小文字が区別されます。 こんにちは、全ての値を変更しましたが、Expert Advisorの 設定で機能そのものを無効にすることが可能かどうか、興味があります。DeleteOppositeOrders(); void DeleteOppositeOrders() { bool fd, fep1, fep2; fep1=ExistPosition(1); fep2=ExistPosition(2); for (int i=OrdersTotal()-1; i>=0; i--){ if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){ if (OrderSymbol()==Symbol()){ fd=false; if (OrderType()==OP_BUYSTOP && OrderMagicNumber()== Magik) { if (fep2) fd=OrderDelete(OrderTicket()); } if (OrderType()==OP_SELLSTOP && (OrderTicket()) { if (OrderType()==OP_BUYSTOP && (OrderTicket()) { if (OrderType()==OP_SELLSTOP && (OrderDelete))OrderMagicNumber()== Magik) { if (fep1) fd=OrderDelete(OrderTicket()); } if (fd && UseSound) PlaySound(NameFileSound); } } bool ExistPosition(int mn) { bool Exist=false; for (int i=0; i<OrdersTotal(); i++){ if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){ if (OrderSymbol()==Symbol() && OrderMagicNumber()== Magik) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { Exist=true; break; } } } return(Exist); } Any questions from newcomers [警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 コーディングのヘルプ 1...845846847848849850851852853854855856857858859...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
開発者の皆さん、こんにちは。
任意のストラテジーテスターをカスタム日付または任意の日付オプションで表示する
画像をご覧ください。
OnInit()関数でプログラムの開始日と終了日の値を取得したいのですが。
どうすれば入手できますか?
ループ全体を関数にして、見つかればバー番号を、見つからなければ WRONG_VALUE を返します。
こんにちは。昨日の問題のiCustomの作業は終了したようです。すべて関数の形にし、制御には「コメント」と「印刷」を使いました。
このExpert Advisorは、iCrossADインジケータの上下矢印のシグナルをキャッチし、BuyまたはSellコマンドに変換して、将来のプログラムで使用することを目的としています。
私は少ししか経験がないので、批判はしないでください。しかし、理にかなった批判やアドバイスをお願いします。
実は、このためにと記事を書きました。EAとインジケータのファイルを添付、コードは以下。
こんにちは。
MT4からMT5へインジケータを変換しました。インジケータを追加フィルタとして使用したい。
私はMT5しか勉強していません。しかし、エラーを見つけることができません。私のМТ4とМТ5の反省点は違う。
専門家にお願いがあるのですが、*.mql5ファイルのエラーを見つけるのを助けてください。
ソースコードを添付します。
とても、ありがたいことです。
こんにちは、私は私のEAで他の注文がトリガーされたときに保留中の注文を削除する 関数を持っています。この機能を無効にするには、外部パラメータにどのように記述すればよいのでしょうか?ありがとうございました。
これはあなたのコードです、このように添付するのがよいでしょう。
もちろん、私はアドバイザーにはあまり向いていないのですが、この仕事は難しくなさそうです。
私はあなたのコード自体には触れないことに注意してください、私(ダミー)にとってさえ、あなたの関数がvoid型であるという事実から始まる多くの論争があります。 この型は、関数が値を返さない ことを示すか、関数パラメータとしてパラメータの不在を示すために使用されます。そして、コードの最後にreturn(Exist)がありますね。
入力変数を宣言し、それを関数のパラメータとして書き、'この変数をFalseにした場合、関数を終了させる。
こんにちは、私は自分のEAで、他の注文がトリガーされたときに保留中の注文を削除する 機能を持っています。この機能を無効にすることを外部パラメータに規定するにはどうしたらよいですか。ありがとうございました。
コードのテキストにあるすべてのFalseとTrueを検索してください。falseとtrueに置き換えてください。この言語は大文字と小文字が区別されます。
コードのテキストにあるすべてのFalseとTrueを検索してください。falseとtrueに置き換えてください。この言語は大文字と小文字が区別されます。
DeleteOppositeOrders(); void DeleteOppositeOrders() { bool fd, fep1, fep2; fep1=ExistPosition(1); fep2=ExistPosition(2); for (int i=OrdersTotal()-1; i>=0; i--){ if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){ if (OrderSymbol()==Symbol()){ fd=false; if (OrderType()==OP_BUYSTOP && OrderMagicNumber()== Magik) { if (fep2) fd=OrderDelete(OrderTicket()); } if (OrderType()==OP_SELLSTOP && (OrderTicket()) { if (OrderType()==OP_BUYSTOP && (OrderTicket()) { if (OrderType()==OP_SELLSTOP && (OrderDelete))OrderMagicNumber()== Magik) { if (fep1) fd=OrderDelete(OrderTicket()); } if (fd && UseSound) PlaySound(NameFileSound); } } bool ExistPosition(int mn) { bool Exist=false; for (int i=0; i<OrdersTotal(); i++){ if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){ if (OrderSymbol()==Symbol() && OrderMagicNumber()== Magik) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { Exist=true; break; } } } return(Exist); }