記事「MQL5を使用してトレンドとチャートパターンを検出する方法」についてのディスカッション - ページ 2 12 新しいコメント Alain Verleyen 2023.04.20 14:17 #11 このフォーラムでは英語のみで投稿してください。 必要であれば、自動翻訳ツールを 使用することができます。 ありがとうございました。 Mohamed Abdelmaaboud 2023.04.20 15:39 #12 J M ダブルボトム)の構成の検出に関しては、むしろ4つの異なる決定的な線(グラフ上で多かれ少なかれ明確にMを描く)を描くことができるコードを提案する可能性はありませんか?価格が変化すると線が引き直されるのではなく、パターンを見抜くという点では全く良いことではありません 。 例えば、ダブル・トップ:1. Aラインが最初の強気足を描きます。そして、このラインは、次のコース変更でそれ以上動くことなく、確定したままである...2. 2本目の線は、最初の弱気修正をトレースすると同時に、潜在的なMパターンの最初のトップの形成の可能性を示す。3. 3つ目は、強気回復(第2の強気インパルス)をトレースし、トレーダーに戻りの切迫を警告する。4. そして最後に、図が本当に形成された時点で引かれるビハインドライン...さて、私の懸念はご理解いただけたと思う。これらの異なるトレーシングが可能なコードはないのでしょうか?ありがとう コメントありがとう。 パターンを検出することは、多くの許容される差異があるため、パターンの形式に基づいて困難である可能性があることは承知しています。 私が思うのは、論理的な方法で記述できるものであれば、何でもコード化できるということです。 ありがとうございました。 J M 2023.04.20 16:34 #13 Mohamed Abdelmaaboud #:コメントありがとう。パターンを検出するのは難しいかもしれませんね。パターンには多くの受け入れ可能なバリエーションがありますし、目的やおっしゃる通りにコードを開発する必要があるかもしれません。私が思うのは、論理的な方法で記述できるものは何でもコード化できるということです。ありがとうございました。 OK ありがとう モデレーターが英語に翻訳しました。 ここは英語のフォーラムです。書き込みは英語のみでお願いします。 Juan Luis De Frutos Blanco 2023.04.20 20:49 #14 モハメド、君の記事を読めて嬉しいよ。 私は勝手に(気を悪くしないでほしいが)、結果をまとめて見るためにコードを統一した:EAを作るためのステップを踏み続けるために、私が思いつくことです。 異なるグラフィック状態への注文を実装することを奨励されるのは誰ですか? よろしくお願いします。 //+------------------------------------------------------------------+ //|TrendDTDB.mq5 //+------------------------------------------------------------------+ input int checkBars= 20; int high1, high2, low1, low2; double highVal1, highVal2, lowVal1, lowVal2; void OnInit() { PonEtiquetas(); } void OnTick() { high1=getmove(MODE_HIGH,checkBars,0); high2=getmove(MODE_HIGH,checkBars,high1+1); highVal1=NormalizeDouble(iHigh(_Symbol,_Period,high1),5); highVal2=NormalizeDouble(iHigh(_Symbol,_Period,high2),5); low1=getmove(MODE_LOW,checkBars,0); low2=getmove(MODE_LOW,checkBars,low1+1); lowVal1=NormalizeDouble(iLow(_Symbol,_Period,low1),5); lowVal2=NormalizeDouble(iLow(_Symbol,_Period,low2),5); // ドブレ・テコ if(highVal1<=highVal2&&lowVal1>lowVal2){ObjectSetString((int)_Symbol,"LS0",OBJPROP_TEXT,0,"Potencial DT-DOBLE TECHO"); DibujaArriba("DTP",clrGreen);} else if(highVal1<=highVal2&&lowVal1<lowVal2){ObjectSetString((int)_Symbol,"LS0",OBJPROP_TEXT,0,"DT-DOBLE TECHO");DibujaArriba("DT",clrGreen);} else{ObjectSetString((int)_Symbol,"LS0",OBJPROP_TEXT,0,"."); ObjectsDeleteAll(0,"DT",0,-1);} //ドブレ・スエロ if(lowVal1>=lowVal2&&highVal1<highVal2){ObjectSetString((int)_Symbol,"LS1",OBJPROP_TEXT,0,"Potencial DS-DOBLE SUELO"); DibujaAbajo("DSP",clrRed);} else if(lowVal1>=lowVal2&&highVal1>highVal2){ObjectSetString((int)_Symbol,"LS1",OBJPROP_TEXT,0,"DT-DOBLE TECHO");DibujaArriba("DS",clrGreen);} else{ObjectSetString((int)_Symbol,"LS1",OBJPROP_TEXT,0,"."); ObjectsDeleteAll(0,"DS",0,-1);} // トレンド・ファインダー if(lowVal1>lowVal2&&highVal1>highVal2){ObjectSetString((int)_Symbol,"LS2",OBJPROP_TEXT,0,"UP-Tendencia ALCISTA");DibujaArriba("T",clrGreen);} else if(highVal1<highVal2&&lowVal1<lowVal2){ObjectSetString((int)_Symbol,"LS2",OBJPROP_TEXT,0,"DOWN-Tendencia BAJISTA");DibujaAbajo("T",clrRed);} else{ObjectSetString((int)_Symbol,"LS2",OBJPROP_TEXT,0,"SW-Tendencia LATERAL"); ObjectsDeleteAll(0,"T",0,-1);} } int getmove(int move, int count, int startPos) { if(move!=MODE_HIGH && move!=MODE_LOW) return (-1); int currentBar=startPos; int moveReturned=getNextMove(move,count*2+1,currentBar-count); while(moveReturned!=currentBar) { currentBar=getNextMove(move,count,currentBar+1); moveReturned=getNextMove(move,count*2+1,currentBar-count); } return(currentBar); } int getNextMove(int move, int count, int startPos) { if(startPos<0) { count +=startPos; startPos =0; } return((move==MODE_HIGH)? iHighest(Symbol(),Period(),(ENUM_SERIESMODE)move,count,startPos): iLowest(Symbol(),Period(),(ENUM_SERIESMODE)move,count,startPos)); } void DibujaArriba(string Nombre, int mColor) { ObjectDelete(0,Nombre); ObjectCreate(0,Nombre,OBJ_TREND,0,iTime(Symbol(),Period(),high2),iHigh(Symbol(),Period(),high2),iTime(Symbol(),Period(),high1),iHigh(Symbol(),Period(),high1)); ObjectSetInteger(0,Nombre,OBJPROP_COLOR,mColor); ObjectSetInteger(0,Nombre,OBJPROP_WIDTH,1); ObjectSetInteger(0,Nombre,OBJPROP_RAY_RIGHT,true); } void DibujaAbajo(string Nombre, int mColor) { ObjectDelete(0,Nombre); ObjectCreate(0,Nombre,OBJ_TREND,0,iTime(Symbol(),Period(),low2),iLow(Symbol(),Period(),low2),iTime(Symbol(),Period(),low1),iLow(Symbol(),Period(),low1)); ObjectSetInteger(0,Nombre,OBJPROP_COLOR,mColor); ObjectSetInteger(0,Nombre,OBJPROP_WIDTH,1); ObjectSetInteger(0,Nombre,OBJPROP_RAY_RIGHT,true); } void PonEtiquetas() { ObjectCreate((int)_Symbol,"LS0", OBJ_LABEL, 0, 0, 0); ObjectSetString(0,"LS0",OBJPROP_FONT,"Arial"); ObjectSetInteger(0,"LS0",OBJPROP_FONTSIZE,25); ObjectSetInteger(0,"LS0",OBJPROP_COLOR,clrGreen); ObjectSetInteger(0,"LS0", OBJPROP_CORNER, 4); ObjectSetInteger(0,"LS0", OBJPROP_XDISTANCE, 800); ObjectSetInteger(0,"LS0", OBJPROP_YDISTANCE, 50); ObjectSetString((int)_Symbol,"LS0",OBJPROP_TEXT,0,"-"); ObjectCreate((int)_Symbol,"LS1", OBJ_LABEL, 0, 0, 0); ObjectSetString(0,"LS1",OBJPROP_FONT,"Arial"); ObjectSetInteger(0,"LS1",OBJPROP_FONTSIZE,25); ObjectSetInteger(0,"LS1",OBJPROP_COLOR,clrRed); ObjectSetInteger(0,"LS1", OBJPROP_CORNER, 4); ObjectSetInteger(0,"LS1", OBJPROP_XDISTANCE, 800); ObjectSetInteger(0,"LS1", OBJPROP_YDISTANCE, 90); ObjectSetString((int)_Symbol,"LS1",OBJPROP_TEXT,0,"-"); ObjectCreate((int)_Symbol,"LS2", OBJ_LABEL, 0, 0, 0); ObjectSetString(0,"LS2",OBJPROP_FONT,"Arial"); ObjectSetInteger(0,"LS2",OBJPROP_FONTSIZE,25); ObjectSetInteger(0,"LS2",OBJPROP_COLOR,clrWhiteSmoke); ObjectSetInteger(0,"LS2", OBJPROP_CORNER, 4); ObjectSetInteger(0,"LS2", OBJPROP_XDISTANCE, 800); ObjectSetInteger(0,"LS2", OBJPROP_YDISTANCE, 130); ObjectSetString((int)_Symbol,"LS2",OBJPROP_TEXT,0,"-"); } JRandomTrader 2023.09.27 10:06 #15 ティックごとにグラフィカル・オブジェクトを作成する のは良いアイデアではない。 Aitor Esteban Yague 2023.10.04 17:25 #16 おめでとう、ありがとう! Hilario Miguel Ofarril Gonzalez 2023.10.06 07:51 #17 非常にクリアで見やすい。 Echo1Zulu1 2024.08.25 00:09 #18 あなたの記事とコードを読みました。とても助かりました。 ひとつだけ理解できないことがあります。getmove "関数はどこで手に入れたのですか?MTQLで検索してみました。 まだ始めたばかりなので、もし答えが簡単だったら、質問してすみません。 ユージン 12 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
このフォーラムでは英語のみで投稿してください。
必要であれば、自動翻訳ツールを 使用することができます。
ありがとうございました。例えば、ダブル・トップ:
1. Aラインが最初の強気足を描きます。そして、このラインは、次のコース変更でそれ以上動くことなく、確定したままである...
2. 2本目の線は、最初の弱気修正をトレースすると同時に、潜在的なMパターンの最初のトップの形成の可能性を示す。
3. 3つ目は、強気回復(第2の強気インパルス)をトレースし、トレーダーに戻りの切迫を警告する。
4. そして最後に、図が本当に形成された時点で引かれるビハインドライン...
さて、私の懸念はご理解いただけたと思う。
これらの異なるトレーシングが可能なコードはないのでしょうか?ありがとう
コメントありがとう。
パターンを検出することは、多くの許容される差異があるため、パターンの形式に基づいて困難である可能性があることは承知しています。
私が思うのは、論理的な方法で記述できるものであれば、何でもコード化できるということです。
ありがとうございました。
コメントありがとう。
パターンを検出するのは難しいかもしれませんね。パターンには多くの受け入れ可能なバリエーションがありますし、目的やおっしゃる通りにコードを開発する必要があるかもしれません。
私が思うのは、論理的な方法で記述できるものは何でもコード化できるということです。
ありがとうございました。
OK ありがとう
モデレーターが英語に翻訳しました。
ここは英語のフォーラムです。書き込みは英語のみでお願いします。
よろしくお願いします。
あなたの記事とコードを読みました。とても助かりました。
ひとつだけ理解できないことがあります。getmove "関数はどこで手に入れたのですか?MTQLで検索してみました。
まだ始めたばかりなので、もし答えが簡単だったら、質問してすみません。
ユージン