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

 
VIREDS #:
mql4ユーザーの皆様、お久しぶりです。シリーズで最も遠くにある負け注文の一部を、どの方向にもある利益のあるポジションを犠牲にして、パーセント単位で閉じる機能があります。この機能を完成させるために協力をお願いしますすなわち、最初の注文ではなく、シリーズの残りのすべての注文(あらゆる方向の利益のあるポジションによる)を部分的に決済する必要があるのです。ありがとう ございました。
この機能には2ヶ月ほど 前から悩まされていました。いろいろなニュアンスがあるんですね。特にこのセリフ
 ProfitPer=OrderProfit()+OrderCommission()+OrderSwap();//ПРОФИТ ОДНОГО ОРДЕРА

グリッドに多くの注文がある場合、すべてゼロで閉じるべきなのに、閉じるときにトータルロスを与えてしまうのです。結局、コミッションとスワップは完全に削除しました。

double spreadLoss =(MarketInfo(_Symbol,MODE_TICKVALUE)* MarketInfo(_Symbol,MODE_SPREAD));
 
そして、関数内では注文ごとにロット/ロットステップで乗算することができますが、私はただ乗算器を作りました
 
そして、OrderClose()の前に、彼らは忘れてしまった(!)
 
こんにちは。現状でのMQL4サービスの支払い 方法についてアドバイスをお願いします。
 

皆さん、こんにちは。シグナルが表示されるとチャートに矢印を描くインジケーターがあるのですが、このインジケーターはどのようなものですか?これらの矢印はすべてチャート上の履歴に配置されており、シグナルの可能性を評価できることがわかります。

グラフを矢印で表示します。

信号の発生を知らせるアラートを付けようとしました。シグナルが出たときに矢印を描く機能をインジケータに見つけました。

void SetDivergenceUP(string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr=iATR(sy,PERIOD_CURRENT,14,index);
   color line_color=clrNONE;
   string nm="", gv_name="";
   if(name_ind=="AO") {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if(name_ind=="MACD") {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if(name_ind=="RSI") {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy,PERIOD_CURRENT,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy,Period(),index)+atr*shiftArrow;
   if(ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
      GlobalVariableSet(gv_name,-1.0);
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),last_prc_tm);
   nm=Prefix+"P"+name_ind+"divUpper"+TimeToString(time_b);
   SetTLine(0,nm,line_color,0,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+" "+name_ind+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if(wnd>0) {
      nm=Prefix+name_ind+"divUpper"+TimeToString(time_b);
      SetTLine(0,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+" "+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
      }

}


この関数の最後に、アラートを発生させるための行を追加しました。追加した線に色をつけて強調しました ;-)

void SetDivergenceUP(string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr=iATR(sy,PERIOD_CURRENT,14,index);
   color line_color=clrNONE;
   string nm="", gv_name="";
   if(name_ind=="AO") {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if(name_ind=="MACD") {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if(name_ind=="RSI") {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy,PERIOD_CURRENT,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy,Period(),index)+atr*shiftArrow;
   if(ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
      GlobalVariableSet(gv_name,-1.0);
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),last_prc_tm);
   nm=Prefix+"P"+name_ind+"divUpper"+TimeToString(time_b);
   SetTLine(0,nm,line_color,0,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+" "+name_ind+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if(wnd>0) {
      nm=Prefix+name_ind+"divUpper"+TimeToString(time_b);
      SetTLine(0,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+" "+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
      }
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol());
}

Alertは動作しており、テスター内はすべて正常です。しかし、端末を起動し、チャート上にインジケーターがあると、履歴の矢印の数だけビープ音とメッセージが出ますJ どうすればいいのでしょうか 、端末起動時に最後のシグナルを受信した時のみAlertが出、履歴の矢印は無音に なるのでしょうか。
 
DanilaMactep #:

皆さん、こんにちは。シグナルが表示されるとチャートに矢印を描くインジケーターがあるのですが、このインジケーターはどのようなものですか?これらの矢印はすべてチャート上の履歴に配置されており、シグナルの可能性を評価できることがわかります。

信号の発生を知らせるアラートを付けようとしました。シグナルが出た時に矢印を描く機能をインジケータに見つけました。


この関数の最後に、アラートを発生させるための行を追加しました。追加した線に色をつけて強調しました ;-)

Alertは動作しており、テスター内はすべて正常です。しかし、私は端末を起動し、チャート上のインジケータがある場合、それは履歴J上の矢印があったとして、多くのオーディオ信号やメッセージを生成 します 私は何をすべきか、どのように私は端末がオンになっている最後の信号でのみアラートを作る必要があり、履歴上の矢印は沈黙していましたか?
最初のバーまたはゼロのバーのみで警告する場合。
 

同僚 - 組織的な質問です。

MT4とMT5のエクスポのテストと最適化を行う私のコンピュータのディスクCの空き容量が少なくなった...私のコンピュータの残り220GBのうち30GBというように...。

以前動作したロボットやテスト中のロボットのログや、異なるターミナルやMT4、MT5での異なるシンボルの履歴などでスペースを取られているのではと思いますが、いかがでしょうか。

シンボル履歴(シンボルごとのティック)や、端末の入って いる別のフォルダ(全部で5つくらいで多くはない)のログをクリアするにはどうしたらいいのでしょうか。

以前、MT4で魔法のファイルclear.batがあったようなものです。

一般的に、文字(そのティック)と別のフォルダのログの履歴の下にスペースをクリアするためのオプション(s)が必要です。デスクトップ上のショートカットはすべてMT4とMT5へのものです。みたいな感じ。

一般に、過去のテスト(シンボルのティック履歴)やトレード(そのログ)のディスクスペースをクリアするために。

少なくとも、掃除の仕方や削除するフォルダー、MT4とMT5-どこにあるのかを読むには...。

Sps.

 

ヒントを教えてください。

iCustom経由のExpert Advisorでインジケータを使用していますが、1tick ごとにこのようなエラーがログに残ります。

インジケーターを編集せずに修正できますか? また、その場合、どのように修正しますか?

 
ALEKSANDR SOKOLOV 1ティック ごとにこのようなエラーが出ています。

インジケーターを編集せずに修正できますか? また、その場合、どのように修正しますか?

Expert Advisor とは別に実行したインジケータがそのような記録を生成しない場合、Expert Advisor で iCustom() を呼び出す際にインジケータのパラメータが正しく指定されているかどうかを確認します。

 
Roman Shiredchenko 端末の入って いる別のフォルダ(全部で5つくらいで多くはない)のログをクリアするにはどうしたらいいのでしょうか。

以前、MT4で魔法のファイルclear.batがあったようなものです。

一般的に、文字(そのティック)と別のフォルダのログの履歴の下にスペースをクリアするためのオプション(s)が必要です。デスクトップ上のショートカットはすべてMT4とMT5へのものです。みたいな感じ。

一般に、過去のテスト(シンボルのティック履歴)やトレード(そのログ)のディスクスペースをクリアするために。

少なくとも、掃除の仕方や削除するフォルダー、MT4とMT5-どこにあるのかを読むには...。

ありがとうございます。

コンピュータは何年前のもので、ローカルフォルダ、tempフォルダ、service intelまたは他のメーカーのフォルダ内のシステムログをいつクリーニングしたのでしょうか。10年前のパソコンで、ブラウザとオフィスだけで、管理画面からシクリナーで100ギガ近く掃除したことがあります。Intelのフォルダの中に25gbがありました。

履歴フォルダのダニそこでも例えばbinansからすべての文字が25gbだった。 そして、共有とmclフォルダのログをチェックします。ログを壊しても何の影響もない。しかし、ダニを倒してしまうと、正しいダニがロードされるのを待つ必要が出てくるかもしれません。