ジグザグコード
//+------------------------------------------------------------------+ //| FastZZ.mq5 | //+------------------------------------------------------------------+ #property copyright "Copyright 2012, Yurich" #property link "https://login.mql5.com/ru/users/Yurich" #property version "1.00" //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 1 #property indicator_label1 "ZZ" #property indicator_type1 DRAW_ZIGZAG #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //+------------------------------------------------------------------+ input int Depth=2000; // Minimum points in a ray //+------------------------------------------------------------------+ double zzH[],zzL[]; double depth;//, deviation; int last,direction; //+------------------------------------------------------------------+ void OnInit() { SetIndexBuffer(0,zzH,INDICATOR_DATA); SetIndexBuffer(1,zzL,INDICATOR_DATA); IndicatorSetInteger(INDICATOR_DIGITS,Digits()); PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0); PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0); depth=Depth*_Point; //deviation=10*_Point; direction=1; last=0; } //+------------------------------------------------------------------+ int OnCalculate(const int total, const int calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick[], const long &real[], const int &spread[]) { if(calculated==0) last=0; for(int i=calculated>0?calculated-1:0; i<total-1; i++) { bool set=false; zzL[i]=0; zzH[i]=0; //--- if(direction>0) { if(high[i]>zzH[last])//-deviation) { zzH[last]=0; zzH[i]=high[i]; if(low[i]<high[last]-depth) { if(open[i]<close[i]) zzH[last]=high[last]; else direction=-1; zzL[i]=low[i]; } last=i; set=true; } if(low[i]<zzH[last]-depth && (!set || open[i]>close[i])) { zzL[i]=low[i]; if(high[i]>zzL[i]+depth && open[i]<close[i]) zzH[i]=high[i]; else direction=-1; last=i; } } else { if(low[i]<zzL[last])//+deviation) { zzL[last]=0; zzL[i]=low[i]; if(high[i]>low[last]+depth) { if(open[i]>close[i]) zzL[last]=low[last]; else direction=1; zzH[i]=high[i]; } last=i; set=true; } if(high[i]>zzL[last]+depth && (!set || open[i]<close[i])) { zzH[i]=high[i]; if(low[i]<zzH[i]-depth && open[i]>close[i]) zzL[i]=low[i]; else direction=1; last=i; } } } //---- zzH[total-1]=0; zzL[total-1]=0; return(total); } //+------------------------------------------------------------------+
インジケーターバッファには高値と安値しか入っていないので、ループの中で中間データを埋めて、現在のバーで1-上昇、-1下降に変換しているのです。正しいように見えるが、間違いがあれば訂正してほしい
void FillZZarray() { ArrayResize(zz,vector); int lastcountbar = 0; for(int i=0;i<vector;i++) // Заполняем массив выходов { if(zzH[i]>0) { zz[i]=1; lastcountbar = 1; if(i!=0) for(int q=i-1;q>=0;q--) { if(zz[q]==0)zz[q]=lastcountbar; } } if(zzL[i]>0) { zz[i]=-1; lastcountbar = -1; if(i!=0) for(int q=i-1;q>=0;q--) { if(zz[q]==0)zz[q]=lastcountbar; } } if(zzH[i]==0 && zzL[i]==0) zz[i] = lastcountbar; } }
カッコイイ!リアルに載せるときだけ、売買シグナルを入れ替える。
Vladimir Tkach:
カッコイイ!本番にかけるときだけ、売買シグナルの位置を変える。
なぜ?)
カッコイイ!本番にかけるときだけ、売買シグナルの位置を変える。
Maxim Dmitrievsky:
なぜ?)
前兆はこうだ。テスト後。
なぜ?)
Vladimir Tkach:
前兆はこうだ。テスト後。
真面目な話、言いたいことがあるなら話そうよ(笑)ゲームをするためにここにいるわけではないのですが......。)
前兆はこうだ。テスト後。
Maxim Dmitrievsky:
学習用の入力データのベクトルが必要なのですが、ここではシグナルが途切れていて、次に買い、次に売り、そしてスキップ...と、ゼロでなく、どうやって埋めればいいのかわかりません...。ジグザグは完璧な入力だと思うのですが、間違っているかもしれません...。
インジケーターは、ディスクリートとアナログの2種類の信号を選択することができます。隙間をゼロで埋めてください。
最初の投稿の写真は、トレーニング用サンプルですか?もし、サンプル外であれば、学習用サンプルで見るのが面白い。これだけ多くのニューロンがあれば、ネットワークは すべての入力データを暗記しているはずだ。
Sergey Chalyshev:
インジケーターの信号は、ディスクリートとアナログの2種類から選択することができます。隙間をゼロで埋めてください。
最初の投稿の写真は、トレーニング用のサンプルでしょうか?もしサンプル外であれば、トレーニングサンプルを見てみるのも面白いでしょう。
学習用サンプルは最後の1000本というか、時系列で0番目から見ると最初の1本で、それ以前はすべてサンプル外です。
明日試してみて、どんな表示が出るか見てみます。これまで、2つ目のジグザグをねじ込み、2つの出力でどのように機能するかを見てきました。今のところ目立ったものはなく、ゼロベースで平均的に動作しています :)

取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
フォーラムには、既成のソリューションや、市場での取引にニューラルネットワークが有効であるという情報はほとんどない。ここで議論し、経験を共有することをお勧めします。すでに議論されているスレッドがある場合は、そちらにリンクを張ってください。
私はここにある クラス、シンプルなマルチレイヤーPerspectronを使用しています。クラスが正しくカウントされることを願っています。私は著者の経験を頼りにしています。実験開始、面白いです :)
現在、11個のインデックスを入力し、出力は1小節分未来にずらしたジグザグになっています。
これが、8ヶ月間のグリッドの結果です。1000本のバー、10000回のエポック、隠れ層の70ニューロンで学習しています。信号は、追加のフィルターを使用せず、ニューラルネットワークによって反転され、純粋なものとなります。15分tf.