[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 324 1...317318319320321322323324325326327328329330331...432 新しいコメント forexman77 2013.05.04 12:18 #3231 皆さん、こんにちは。MQL4 Expert Advisorを1ヶ月間勉強し、Expert Advisorを書くことにしました。 経験不足で新しいものを書きたくなかったので、本にあるtradingexpert.mq4テンプレートを使用することにしました。戦略の本質は、「ラリー・ウィリアムズ」の高値と安値の3本足で、高値と安値の3日EMAを2本ずつプロットし、売りを高値に、買いを安値に。テンプレートの中のグローバル 変数のセクションで、extern double Rastvor =28.0; という行を削除し(実はこれは必要ない)、取引条件からも削除しました。グローバル変数の MA 値を 3 に変更しました。extern int Period_MA_1= 3; // 周期MA 1 extern int Period_MA_2= 3; // 周期MA 2取引基準の欄には、こう書かれていた。 //--------------------------------------------------------------- 5 -- // Торговые критерии MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_LWMA,PRICE_TYPICAL,0); // МА_1 MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_LWMA,PRICE_TYPICAL,0); // МА_2 if (MA_1_t > MA_2_t + Rastvor*Point) // Если разница между { // ..МА 1 и 2 большая Opn_B=true; // Критерий откр. Buy Cls_S=true; // Критерий закр. Sell } if (MA_1_t < MA_2_t - Rastvor*Point) // Если разница между { // ..МА 1 и 2 большая Opn_S=true; // Критерий откр. Sell Cls_B=true; // Критерий закр. Buy } //--------------------------------------------------------------- になりました。//-------------------------------------------------------------- 5 -- // 取引条件 MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_EMA,PRICE_HIGH,0); // MA_1 MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_LOW,0); // MA_2 if (PRICE_HIGH * Point >= MA_1_t * Point){ (PRICE_HIGH * Point >= MA_1_t * Point) Opn_S=true。 Cls_B=true。}. if (PRICE_LOW * Point <= MA_2_t * Point){ (PRICE_LOW * Point <= MA_2_t * Point) Opn_B=true; //オープン基準です。買い Cls_S=true; // Close Criterion.Sell}//---------------------------------------------------------------さて、問題の核心は、システムが売り注文を開くだけで、買おうとはしないことです。どのようなエラーが発生するのでしょうか?どこかに間違いがある可能性が高いので、厳しく判断せず、アドバイスで助けてください) [ARCHIVE]Any rookie question, so [Archive!] Any rookie question, Need an Explanation Mikhail Kozhemyako 2013.05.04 12:52 #3232 Forexman77://-------------------------------------------------------------- 5 -- // 取引条件 MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_EMA,PRICE_HIGH,0); // MA_1 MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_LOW,0); // MA_2 if (PRICE_HIGH * Point >= MA_1_t * Point){ (PRICE_HIGH * Point >= MA_1_t * Point) Opn_S=true。 Cls_B=true。}. if (PRICE_LOW * Point <= MA_2_t * Point){ (PRICE_LOW * Point <= MA_2_t * Point) Opn_B=true; //オープン基準です。買い Cls_S=true; // Close Criterion.Sell}//---------------------------------------------------------------さて、問題の核心は、システムが売り注文を開くだけで、買おうとはしないことです。どのようなエラーが発生するのでしょうか?どこかに間違いがある可能性も十分あります。 判断せず、アドバイスにご協力ください)。 PRICE_LOWとPRICE_HIGH、これは何でしょう?これらは、0または1、最大6までの整数定数である。iHigh(Symbol(),Period(),i)で バーiの最大BID値を取得し、iLow(Symbol(),Period(),i)でバーiの最小BID値を取得する必要があります。現在のバーでタンブリングする場合: if ( iHigh(Symbol(),Period(),0) >= MA_1_t) そしてMAにPointを掛ける必要はないです。 Сергей 2013.05.04 12:55 #3233 皆さん、こんにちは。何が問題なのか、教えてください。Awesome 標準インジケータにボリュームインジケータ(Volume)を付けてみました。Total wave volume(安値から高値までカウントし、AwesomeのMinとMaxに相当する値)の計算を整理したい。図1参照何がエラーなのか、値がカウントされない。以下は、コードそのものです。#property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Red #property indicator_color2 SteelBlue #property indicator_width1 2 //---- basic fan indicator parameters extern bool Show_AOLine_2=true; extern int SlowEMA3=34; extern int EMA=2; extern bool Show_Volume=true; extern double coaf=1.5; extern bool Show_Vol_line=true; //---- indicator buffers double AOBuffer3[]; double ExtMapBuffer1[]; double VLUP; double prhgh_e=0, prhgh_s, prlw_e=0, prlw_s; datetime tmhgh, tmlw; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- drawing settings string name_ind = "Awesome_super_volumes"; IndicatorShortName("Awesome_super_volumes"); //---- AO_fan line 2 (basic) if(Show_AOLine_2 ==true){Show_AOLine_2=DRAW_LINE; } else {Show_AOLine_2=DRAW_NONE; } SetIndexBuffer(0,AOBuffer3); SetIndexStyle(0,Show_AOLine_2); SetIndexLabel(0,"basic line"); SetIndexBuffer(1,ExtMapBuffer1); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexLabel(1,"Volume"); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| Awesome Oscillator | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars=IndicatorCounted(); double prev,current; //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //---- AO_fan line 2 (basic) buffer for(int i=0; i<limit; i++) { //---- AO_fan basic line + Volumes AOBuffer3[i]=iMA(NULL,0,EMA,0,MODE_SMA,PRICE_MEDIAN,i)-iMA(NULL,0,SlowEMA3,0,MODE_SMA,PRICE_MEDIAN,i); if (Show_Volume==true) { double nSum = Volume[i]*Point*coaf; if (AOBuffer3[i]<=0)ExtMapBuffer1[i] = nSum; if (AOBuffer3[i]>0)ExtMapBuffer1[i] = -nSum; } if (Show_Vol_line==true) { double Vol_Arr[]; if (AOBuffer3[i]<=0)Vol_Arr[i]=Volume[i]*Point*coaf; if (AOBuffer3[i]>0)Vol_Arr[i] = -Volume[i]*Point*coaf;} //---- dispatch values between 2 buffers } //-- Поиск High & Time if (AOBuffer3[i]>=0) { prhgh_s = High[i]; if (prhgh_s >= prhgh_e) {prhgh_e = prhgh_s; tmhgh = Time[i];} } //-- Поиск Low & Time if (AOBuffer3[i]<=0) { prlw_s = Low[i]; if (prlw_s > prlw_e) {prlw_e = prlw_s; tmlw = Time[i];} } // -- Пересчет баров от High до Low int colbr = iBarShift(NULL,0,tmhgh)-iBarShift(NULL,0,tmlw); int shift=iBarShift(NULL,0,tmlw); for (i=0; i<=colbr; i++) {VLUP += MathAbs(iVolume(NULL,0, shift+i));} SetText("Awesome_super_volumes"+Time[i], DoubleToStr(VLUP,0), tmhgh, 0.0010, Black); //-- Эти значения должны отображаться в окне Awesome SetText2("Волна1",DoubleToStr(VLUP,0),980,10,Gray,10); SetText2("Волна2",TimeToStr(tmlw,0),980,25,Gray,10); SetText2("Волна3",TimeToStr(tmhgh,0),980,40,Gray,10); SetText2("Волна4",DoubleToStr(colbr,0),980,55,Gray,10); //---- done return(0); } //+------------------------------------------------------------------+ void SetText(string name, string Vl, datetime t1, double p1, color c) { // if (ObjectFind(name)!=-1) ObjectDelete(name); ObjectCreate(name,OBJ_TEXT,WindowFind("Awesome_super_volumes"),0,0,0,0); ObjectSetText(name, Vl, 10, "Times New Roman", c); ObjectSet(name, OBJPROP_TIME1 , t1); ObjectSet(name, OBJPROP_PRICE1, p1); ObjectSet(name, OBJPROP_COLOR, c); } //--Ввeл дополнительную процедуру для отображения значений на чарте. Ее не должно быть. void SetText2(string name, string text, int xdist, int ydist, color c, int size) { ObjectCreate(name,OBJ_LABEL,0,0,0,0,0); ObjectSet(name, OBJPROP_XDISTANCE, xdist); ObjectSet(name, OBJPROP_YDISTANCE, ydist); ObjectSetText(name,text,7,"Arial Black",c); } forexman77 2013.05.04 13:27 #3234 Sepulca: PRICE_LOWとPRICE_HIGH、これは何でしょう?これらは、値0または1、最大6までの整数定数である。iHigh(Symbol(),Period(),i)はバーiの最大BID値を取得し、iLow(Symbol(),Period(),i)はバーiの最小BID値を取得するために使用しなければなりません。現在のバーでタンブリングする場合: if ( iHigh(Symbol(),Period(),0) >= MA_1_t) そして、MAにPointを乗じる必要はない。 ありがとうございました!!!効果あり!!! Сергей 2013.05.05 02:45 #3235 みんな、誰かこのコードのどこがおかしいか教えてくれplz! Vladyslav Goshkov 2013.05.05 03:04 #3236 Fox_RM:みんな、誰かこのコードのどこがおかしいか教えてくれplz! if (Show_Vol_line==true) { double Vol_Arr[]; // ошибки: 1. Размещение 2. Область видимости if (AOBuffer3[i]<=0)Vol_Arr[i]=Volume[i]*Point*coaf; if (AOBuffer3[i]>0)Vol_Arr[i] = -Volume[i]*Point*coaf;} //---- dispatch values between 2 buffers } Сергей 2013.05.05 04:16 #3237 VladislavVG: よくわからないんです。しかし、音量表示には 問題がない。体積計算の問題がある。この中のどこか。 //-- Поиск High & Time if (AOBuffer3[i]>=0) { prhgh_s = High[i]; if (prhgh_s >= prhgh_e) {prhgh_e = prhgh_s; tmhgh = Time[i];} // -- tmhgh - выводил это значение оно = 0; } //-- Поиск Low & Time if (AOBuffer3[i]<=0) { prlw_s = Low[i]; if (prlw_s > prlw_e) {prlw_e = prlw_s; tmlw = Time[i];} } // -- Пересчет баров от High до Low int colbr = iBarShift(NULL,0,tmhgh)-iBarShift(NULL,0,tmlw); tmlw - тоже = 0; Почему? int shift=iBarShift(NULL,0,tmlw); for (i=0; i<=colbr; i++) {VLUP += MathAbs(iVolume(NULL,0, shift+i));} SetText("Awesome_super_volumes"+Time[i], DoubleToStr(VLUP,0), tmhgh, 0.0010, Black); Viktar Dzemikhau 2013.05.05 12:12 #3238 asdfgh001:こんにちは。少し話がずれますが、質問させてください。TA形状のスライスをCSVファイルにしたものがどこかにないか、教えていただけないでしょうか。txtやxlsなど、プログラムで処理できる形式なら何でもいいんです。様々なTAの記事、教科書にTAフィギュアの例がありますが、もちろん普通の写真としてです。どなたか、H1-H4の期間におけるある通貨ペアの歴史の断片として保存された、多かれ少なかれ大きなTAシンボルのセットをお持ちではないでしょうか?ググってみたが、見つからなかった。もちろん、手作業で履歴を確認し、形状に印をつけ、この履歴の一部を.csvとしてエクスポートし、必要な回数だけ繰り返し、最後に形状ベースを収集することも可能です。しかし、もし誰かがすでにこれをやっていたら、時間を節約したいと思います。よろしくお願いします :) なぜCSVファイルでの図形が必要なのですか?シェイプライブラリを書く...他人のものを借りるのではなく、自分が理解できるように、自分で書くこと。多ければ良いというものでもない! Vladyslav Goshkov 2013.05.05 12:45 #3239 Fox_RM: よくわからないんです。しかし、ボリュームを表示することに問題はない。ボリュームカウントに 問題がある。この中のどこか。 1.配列の配置、つまりメモリの確保が必要です。そうでなければ、単に値を保存する場所がないだけです;)。2.新しいTickを受信すると、均等に配置された配列は再配置/初期化されます。これは、スコープと関係があります。これを防ぐために、配列は "static "型でなければなりません。プログラミングの基礎知識について何か読む。HZ 数え方の問題は、私が配列の使い方の誤りを指摘したところです。 Сергей 2013.05.05 13:27 #3240 VladislavVG: 1.配列の位置決め、つまりメモリの確保が必要です。そうでなければ、値を格納する場所がないだけです;)。2.新しいTickを受信すると、均等に配置された配列は再配置/初期化されます。これは、スコープと関係があります。これを防ぐために、配列は "static "型でなければなりません。プログラミングの基礎知識について何か読む。HZ 数え方の問題は、私があなたに配列の使い方の誤りを指摘したところです。 つまり、Vol_Arr[] はグローバル配列として初期化 されるべきだと私は理解しています。 質問はもちろんヌルい質問です、BUT。 1.なぜか、インジケータにボリュームが正しく表示されます。2.計算するときは、Vol_Arr[]ではなく、AOBuffer3[] にアクセスしています。ありがとうございました。 1...317318319320321322323324325326327328329330331...432 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
皆さん、こんにちは。
MQL4 Expert Advisorを1ヶ月間勉強し、Expert Advisorを書くことにしました。 経験不足で新しいものを書きたくなかったので、本にあるtradingexpert.mq4テンプレートを使用することにしました。
戦略の本質は、「ラリー・ウィリアムズ」の高値と安値の3本足で、高値と安値の3日EMAを2本ずつプロットし、売り
を高値に、買いを安値に。
テンプレートの中のグローバル 変数のセクションで、extern double Rastvor =28.0; という行を削除し(実はこれは必要ない)、取引条件からも削除しました。
グローバル変数の MA 値を 3 に変更しました。
extern int Period_MA_1= 3; // 周期MA 1
extern int Period_MA_2= 3; // 周期MA 2
取引基準の欄には、こう書かれていた。
//-------------------------------------------------------------- 5 --
// 取引条件
MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_EMA,PRICE_HIGH,0); // MA_1
MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_LOW,0); // MA_2
if (PRICE_HIGH * Point >= MA_1_t * Point)
{ (PRICE_HIGH * Point >= MA_1_t * Point)
Opn_S=true。
Cls_B=true。
}.
if (PRICE_LOW * Point <= MA_2_t * Point)
{ (PRICE_LOW * Point <= MA_2_t * Point)
Opn_B=true; //オープン基準です。買い
Cls_S=true; // Close Criterion.Sell
}
//---------------------------------------------------------------
さて、問題の核心は、システムが売り注文を開くだけで、買おうとはしないことです。どのようなエラーが発生するのでしょうか?
どこかに間違いがある可能性が高いので、厳しく判断せず、アドバイスで助けてください)
//-------------------------------------------------------------- 5 --
// 取引条件
MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_EMA,PRICE_HIGH,0); // MA_1
MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_LOW,0); // MA_2
if (PRICE_HIGH * Point >= MA_1_t * Point)
{ (PRICE_HIGH * Point >= MA_1_t * Point)
Opn_S=true。
Cls_B=true。
}.
if (PRICE_LOW * Point <= MA_2_t * Point)
{ (PRICE_LOW * Point <= MA_2_t * Point)
Opn_B=true; //オープン基準です。買い
Cls_S=true; // Close Criterion.Sell
}
//---------------------------------------------------------------
さて、問題の核心は、システムが売り注文を開くだけで、買おうとはしないことです。どのようなエラーが発生するのでしょうか?
どこかに間違いがある可能性も十分あります。 判断せず、アドバイスにご協力ください)。
PRICE_LOWとPRICE_HIGH、これは何でしょう?これらは、0または1、最大6までの整数定数である。
iHigh(Symbol(),Period(),i)で バーiの最大BID値を取得し、iLow(Symbol(),Period(),i)でバーiの最小BID値を取得する必要があります。
現在のバーでタンブリングする場合: if ( iHigh(Symbol(),Period(),0) >= MA_1_t) そしてMAにPointを掛ける必要はないです。
皆さん、こんにちは。
何が問題なのか、教えてください。
Awesome 標準インジケータにボリュームインジケータ(Volume)を付けてみました。
Total wave volume(安値から高値までカウントし、AwesomeのMinとMaxに相当する値)の計算を整理したい。図1参照
何がエラーなのか、値がカウントされない。
以下は、コードそのものです。
PRICE_LOWとPRICE_HIGH、これは何でしょう?これらは、値0または1、最大6までの整数定数である。
iHigh(Symbol(),Period(),i)はバーiの最大BID値を取得し、iLow(Symbol(),Period(),i)はバーiの最小BID値を取得するために使用しなければなりません。
現在のバーでタンブリングする場合: if ( iHigh(Symbol(),Period(),0) >= MA_1_t) そして、MAにPointを乗じる必要はない。
みんな、誰かこのコードのどこがおかしいか教えてくれplz!
みんな、誰かこのコードのどこがおかしいか教えてくれplz!
よくわからないんです。しかし、音量表示には 問題がない。体積計算の問題がある。この中のどこか。
こんにちは。
少し話がずれますが、質問させてください。
TA形状のスライスをCSVファイルにしたものがどこかにないか、教えていただけないでしょうか。txtやxlsなど、プログラムで処理できる形式なら何でもいいんです。
様々なTAの記事、教科書にTAフィギュアの例がありますが、もちろん普通の写真としてです。どなたか、H1-H4の期間におけるある通貨ペアの歴史の断片として保存された、多かれ少なかれ大きなTAシンボルのセットをお持ちではないでしょうか?
ググってみたが、見つからなかった。もちろん、手作業で履歴を確認し、形状に印をつけ、この履歴の一部を.csvとしてエクスポートし、必要な回数だけ繰り返し、最後に形状ベースを収集することも可能です。しかし、もし誰かがすでにこれをやっていたら、時間を節約したいと思います。
よろしくお願いします :)
なぜCSVファイルでの図形が必要なのですか?シェイプライブラリを書く...他人のものを借りるのではなく、自分が理解できるように、自分で書くこと。多ければ良いというものでもない!
よくわからないんです。しかし、ボリュームを表示することに問題はない。ボリュームカウントに 問題がある。この中のどこか。
1.配列の配置、つまりメモリの確保が必要です。そうでなければ、単に値を保存する場所がないだけです;)。
2.新しいTickを受信すると、均等に配置された配列は再配置/初期化されます。これは、スコープと関係があります。これを防ぐために、配列は "static "型でなければなりません。
プログラミングの基礎知識について何か読む。
HZ 数え方の問題は、私が配列の使い方の誤りを指摘したところです。
1.配列の位置決め、つまりメモリの確保が必要です。そうでなければ、値を格納する場所がないだけです;)。
2.新しいTickを受信すると、均等に配置された配列は再配置/初期化されます。これは、スコープと関係があります。これを防ぐために、配列は "static "型でなければなりません。
プログラミングの基礎知識について何か読む。
HZ 数え方の問題は、私があなたに配列の使い方の誤りを指摘したところです。
つまり、Vol_Arr[] はグローバル配列として初期化 されるべきだと私は理解しています。
質問はもちろんヌルい質問です、BUT。
1.なぜか、インジケータにボリュームが正しく表示されます。
2.計算するときは、Vol_Arr[]ではなく、AOBuffer3[] にアクセスしています。
ありがとうございました。