コーディングのヘルプ - ページ 351

 
mladen:
stevenpun そのためには、そのインディケータに「傾き方向」のバッファを追加するか、すでにその傾きをバッファで解決している他のMACDを使用するのが最も簡単でしょう。

これはどうでしょうhttps://www.mql5.com/en/forum/178018/page67

しかし、問題は私がコードに置く必要があるのか、私は多くのeaをグーグルしているが、いくつかの例を見つけるのに成功していない。

いくつかの例を示してください、助けてくれてありがとう。

 
stevenpun:
このようにhttps://www.mql5.com/en/forum/178018/page67

しかし、問題は、私はコードで何を置く必要があります、私は多くのeaをグーグルしているが、いくつかの例を見つけるために成功していない。

私にいくつかの例を示してください、助けていただきありがとうございます。

スティーブンパン

これは良い例でしょう。

colors" バッファを読んで、その中の値が -1 から 1 に変化したら買いのシグナル、1 から -1 に変化したら売りのシグナルです ("from" はカラーバッファの前の値、 "to" は現在の値、もし閉じたバーだけを扱うなら "from" は2バー前、 "to" は1バー前) 。

 

こんにちは。

私は新参者です。私は矩形オブジェクトを 更新したいのですが、方法がわかりません。以下のコードは、EMAが交差した場合に、オブジェクトの矩形を作成するために使用しました。これらの矩形は、価格がリトレースバックし、それに触れた場合、終了する必要があります。どのようにそれを行うには?

事前にありがとうございました。

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 clrLime

#property indicator_width1 2

#property indicator_color2 clrMagenta

#property indicator_width2 2

extern int EMA1 = 3;

extern int EMA2 = 21;

extern int EMA3 = 63;

extern double arrowDistance = 0.0003;

extern color upRectColor = clrYellow;

extern color dnRectColor = clrDodgerBlue;

extern color touchRectColor = clrDarkGray;

//---

extern double rectHigh = 0.0001;

extern int rectDays = 3;

extern int bars_limit = 2000;

extern bool showRectangle = true;

double upArrow[];

double dnArrow[];

double prev2EMA1, prev2EMA2, prev2EMA3;

double prevEMA1, prevEMA2, prevEMA3;

double curEMA1, curEMA2, curEMA3;

double prevOpenPrc, prevClosePrc, prevLowPrc, prevHighPrc;

string objRectName;

string rectArray[];

string indiName = "Emac";

int rectValidity = 0;

int arrayMaxAmounts = 99999;

int arrayCurAmount = 0;

int arrayLastAmount = 0;

//+------------------------------------------------------------------+

//| INIT() |

//+------------------------------------------------------------------+

int init() {

if (Period() != PERIOD_H1) {

Alert("Use only @ TF: H1");

return(0);

}

ArrayResize(rectArray,arrayMaxAmounts,arrayMaxAmounts);

IndicatorBuffers(2);

SetIndexBuffer(0,upArrow);

SetIndexBuffer(1,dnArrow);

SetIndexStyle(0,DRAW_ARROW);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(0,233);

SetIndexArrow(1,234);

SetIndexEmptyValue(0,0.0);

SetIndexEmptyValue(1,0.0);

SetIndexLabel(0,"Up");

SetIndexLabel(1,"Dn");

return(0);

}

//+------------------------------------------------------------------+

//| DEINIT() |

//+------------------------------------------------------------------+

int deinit() {

int k=0;

while (k<ObjectsTotal()) {

string objname = ObjectName(k);

if (StringSubstr(objname,0,StringLen("Emac")) == "Emac")

ObjectDelete(objname);

else

k++;

}

return(0);

}

//+------------------------------------------------------------------+

//| START() |

//+------------------------------------------------------------------+

int start() {

if (Period() != PERIOD_H1) {

Alert("Use only @ TF: H1");

return(0);

}

int limit,i,k;

int counted_bars=IndicatorCounted();

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---

if (limit>bars_limit-1 && bars_limit!=0) limit=bars_limit-1;

if (Bars<EMA1 || Bars<EMA2 || Bars0 && bars_limit0 && bars_limit0 && bars_limit<EMA3)) {

Alert("Adjust limit settings or put more bars on your chart!");

return(0);

}

//---

for (i=0; i<limit; i++) {

prev2EMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i+2);

prev2EMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i+2);

prev2EMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i+2);

prevEMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i+1);

prevEMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i+1);

prevEMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i+1);

curEMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i);

curEMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i);

curEMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i);

prevOpenPrc = iOpen(NULL,0,i+1);

prevClosePrc = iClose(NULL,0,i+1);

prevLowPrc = iLow(NULL,0,i+1);

prevHighPrc = iHigh(NULL,0,i+1);

rectValidity = rectDays*86400;

if ( (prev2EMA1=prevEMA2)&&(curEMA1>curEMA2)&&(prevEMA2>=prevEMA3)&&(curEMA2>curEMA3) ) { // up

upArrow = prevLowPrc - arrowDistance;

if (showRectangle == true) {

//----------------------- Draw Rectangle ----------------------

objRectName = StringConcatenate(indiName,"_",FuncPeriodToStr(Period()),"_",DoubleToStr(Time,0));

if (ObjectFind(objRectName) == -1) { // not exists

ObjectCreate(objRectName, OBJ_RECTANGLE, 0,Time,prevLowPrc,Time+rectValidity,prevLowPrc+rectHigh);

ObjectSet(objRectName, OBJPROP_COLOR, upRectColor);

ObjectSet(objRectName, OBJPROP_WIDTH, 0);

ObjectSet(objRectName, OBJPROP_STYLE, STYLE_SOLID);

//--- put information to Array ---

arrayCurAmount = ArraySize(rectArray);

rectArray[arrayCurAmount] = StringConcatenate(objRectName,"$up$",Time,"$",prevClosePrc,"$0"); // 0=new, not yet touched

} // if

} // if

} // if

if ( (prev2EMA1>prev2EMA2)&&(prevEMA1<=prevEMA2)&&(curEMA1<curEMA2)&&(prevEMA2<=prevEMA3)&&(curEMA2<curEMA3) ) { // down

dnArrow = prevHighPrc + arrowDistance;

if (showRectangle == true) {

//----------------------- Draw Rectangle ----------------------

objRectName = StringConcatenate(indiName,"_",FuncPeriodToStr(Period()),"_",DoubleToStr(Time,0));

if (ObjectFind(objRectName) == -1) { // not exists

ObjectCreate(objRectName, OBJ_RECTANGLE, 0, Time,prevHighPrc,Time+rectValidity,prevHighPrc-rectHigh);

ObjectSet(objRectName, OBJPROP_COLOR, dnRectColor);

ObjectSet(objRectName, OBJPROP_WIDTH, 0);

ObjectSet(objRectName, OBJPROP_STYLE, STYLE_SOLID);

//--- put information to Array ---

arrayCurAmount = ArraySize(rectArray);

rectArray[arrayCurAmount] = StringConcatenate(objRectName,"$dn$",Time,"$",prevClosePrc,"$0"); // 0=new, not yet touched

} // if

} // if

} // if

} // for

//----------------------- Edit Rectangle, change time2 & color, if price touched ----------------------

return(0);

} // start

//+------------------------------------------------------------------+

void DelObjects(string id) {

int ot1=ObjectsTotal();

while(ot1>=0) {

if (StringFind(ObjectName(ot1),id,0)>-1) {

ObjectDelete(ObjectName(ot1));

}

ot1--;

}

return;

}

//+------------------------------------------------------------------+

string FuncPeriodToStr(int thePeriod) {

switch(thePeriod) {

case 1: return("M1");

case 5: return("M5");

case 15: return("M15");

case 30: return("M30");

case 60: return("H1");

case 240: return("H4");

case 1440: return("D1");

case 10080: return("W1");

case 43200: return("MN1");

default: return("MN1");

}

}

//+------------------------------------------------------------------+

 

2つ以上のEA間で通信するには?

 

新米がMT4ビルド670に開発しようとしています。助けて〜。

MetaTrader 5 用の 'Three Moving Averages' トレーディングロボット (Expert Advisor) をMetaTrader Market でダウンロードしますか?

K.I.S.S. (keep it simple stupid)が好きなので、これが好きです。

私は初心者ですが、私はこれを開発したいと思います。

(1.バージョン_01)

実行すると、EAがONになると同時にすぐにポジションを置く。

.ex5からリバースエンジニアリングして.mq4を作るような感じです。

(2.バージョン_02)

同じチャートで、Zig-Zagから発見される週足R&Sを可視化します。

(3. バージョン_03)

ロジックを追加する。

--- トレンドラインの20pips以上、以下ではエントリーしない。

週足R&Sから20pips離れたところで、ポジションをクリアする。

ご協力をお願いします。

よろしくお願いします。

 

cosmiclifeform, それ以来ニーストレーダーEAをバックテスト することができず、最適化することができませんでした。アルパリデモとイスタFXでやってみましたが、同じです...空白の結果を出し続けています。

cosmiclifeform:
こんにちは、Mastercash。

ストラテジーテスターでNiceTrader EAをダウンロードし、問題なく動作させることができました。

デフォルトの設定を使用し、何も変更しませんでしたが、エラーメッセージも表示されませんでした。

デモでリアルタイムに実行したわけではありませんが、このEAはストラテジーテスターで問題なく動作します。添付のチャートを見てください...

ログにエラーメッセージや、取引できない理由の手がかりはありませんか...?

お役に立てれば幸いです。

ロバート

 
Mastercash:
cosmiclifeform, それ以来、Nice TraderEAをバックテストすることができず、最適化することができなかったのが不思議です。

こんにちは、Mastercashです。

FXDDのデモ口座でEAを実行し、特別なことは何もしていません。

もっとお役に立てればよかったのですが、具体的な手がかり(エラーログ、スクリーンショット、その他の条件)がなければ、なぜ空白の結果が出るのかを突き止めることは不可能でしょう。

私がお勧めできるのは...

まず、テスターで正常に動作することを知っている良いEAを試してみてください。

そうすれば、あなたのデモ口座とあなたの手順の両方が問題ないことが証明されます。

まず、すべてが想定通りに動くという確信を得ましょう。

それから、あなたのNice TraderEAを試してみてください...そして、何が起こったかを正確に書き留めてください。真っ白な画面でもログを確認することができるはずです。

PRINTとCOMMENTステートメントをあらゆるところに追加してください...そしてもう一度ログをチェックしてください...EAタブとJournalタブの両方を...。

また、COMMENTは画面に表示されるので、EAが機能しているかどうかを実際に確認することができます。

良いコーディングの手助けを得るための最重要ポイントは...

あなたのEAで何が起こっているのか、可能な限り多くの手がかりを提供することです...

可能な限りのことを試し続けて、結果を教えてください。

お気をつけて。

ロバート

 
apprentice coder:
2つ以上のEA間で通信する方法は?

もし、そのための関数や 関数群があればという意味なら、答えは「そんなものはない」です。

私はこれまで多くの試みを見てきましたが、今のところ、どの方法もすべての状況でうまくいきません。ただ1つだけ。しかし、1つは私が発明したもので、そのアイデアはとてもシンプルで、誰もそれを考えつかなかったことがいまだに信じられません(それは同じ場所にないEAの通信さえ提供し、そのためのAPIを使用しません)。

予想される範囲内で考えてみてください。

 
mladen:
もし、そのための関数や関数のセットがあれば、という意味なら、答えは「そんなものはない」です。

私はこれまで多くの試みを見てきましたが、今のところ、どの方法もすべての状況においてうまくいきませんでした。ただ1つだけ。しかし、1つは私が発明したもので、そのアイデアはとてもシンプルで、誰もそれを考えつかなかったということがまだ信じられない(それは同じ場所にないEAの通信さえ提供し、そのためのAPIを使用しない)ので、私はそのソリューションを私のために保持している(この場合、私は誰かが同じことを考えるかどうかを見るのを待っている)。

ただ、予想される範囲内で考えてみてください。

私はあなたが何を意味するか知っている:アイデアは時々、それらがその後どのように作られている方法よりもはるかに価値があります。ありがとうございます。

 

こんにちは。

下のインジケータが 左上に表示する情報をすべてオフにしていただけないでしょうか?

よろしくお願いします。)

ファイル: