どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 790 1...783784785786787788789790791792793794795796797...1178 新しいコメント forexman77 2014.11.23 20:02 #7891 Forexman77:疑問が解消されたわけではありません。では、まず最初に。最大値を見つけ、それに対して直線をプロットする。この最大線と現在の最小線との距離がチェックされる。Rmax "を超えると、最大値を示すバー上に矢印が設定されます。矢印は配置されているが、そこにはない。わかりやすくするために、差分を示すバッファ「BufferLow[i]」を追加し、そのデータはエクスプローラウィンドウで確認できるようにしました。いつもそうなんです。冬は雪を待てない)自分でやりました。そんな似たような発想に苛まれた人がいたら、ここにそのコードがある。#property copyright "Kamil Gazizullin" #property link "forexman77@yandex.ru" #property version "1.00" //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 5 #property indicator_color1 Magenta #property indicator_color2 Aqua #property indicator_color3 SlateBlue #property indicator_color4 SlateBlue #property indicator_color5 clrNONE //--- input parameters extern int Period_=10; extern double diapazon =0.003; //--- buffers double Max[]; double Min[]; double MaxIndex[]; double MinIndex[]; double rAZNOST[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(5); SetIndexBuffer(0,MaxIndex); SetIndexBuffer(1,MinIndex); SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,116); SetIndexEmptyValue(1,0.0); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,116); SetIndexEmptyValue(0,0.0); SetIndexBuffer(2,Max); SetIndexBuffer(3,Min); SetIndexBuffer(4,rAZNOST); IndicatorDigits(Digits+1); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(),limit, i,k,r,p,t,f; double minimum,maximum,Dmax,Dmin; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(i=0;i<limit;i++) { maximum=High[iHighest(NULL,0,MODE_HIGH,Period_,i)]; minimum=Low[iLowest(NULL,0,MODE_LOW,Period_,i)]; Max[i]=maximum; Min[i]=minimum; } for(i=0;i<limit;i++) { k=iHighest(NULL,0,MODE_HIGH,Period_,i); t=iLowest(NULL,0,MODE_LOW,Period_,i); Dmax=Max[i]-Low[i]; Dmin=High[i]-Min[i]; if (Dmax > diapazon){p=k;for(r=p;r>=k;r--)MaxIndex[k]=Max[k];} if (Dmin > diapazon){p=t;for(f=p;f>=t;f--)MinIndex[t]=Min[t];} if (MaxIndex[i]==Max[i+1])MaxIndex[i]=0; if (MinIndex[i]==Min[i+1])MinIndex[i]=0; rAZNOST[i]=Max[i]-Min[i]; } return(0); } Vitalie Postolache 2014.11.23 21:25 #7892 Awwl:内蔵のHeiken Ashiは少し物足りない感じですが(745の私だけかな?)、仕組みは明確です。そして、WmiForがどのように構築されているかは不明ですHeiken Ashi コードでは、4 本のバーのヒストグラムからローソク足が描画されます。つまり、バッファの数が増える(0から3まで)と、新しいバーが古いバーの上に描かれる。順番は以下の通りです。 LowHigh - HighLow - Open - Close。 燭台の順番は、胴と尾のある、正しい外観を得るために、以下のようにします。 max(Open,Close)//thick color line// - min(Open,Close)//thick white// - High//thick color line// - Low//thick white//.このインジケータをコンパイルして、チャートに貼り付けて、すべての問題点を見てみましょう(写真参照)。しかし、この方法は、Heiken Ashiと同様に、欠点があります - 各「ろうそく」の下に、我々は、より低いすべてをカバーする背景色の白いループを取得します。しかし、WmiForを使えば、すべてが完璧です。文書化されていない機能?1枚目:Heiken Ashi(別ウィンドウに配置)、2枚目:WmiFor、背景はわかりやすいように薄緑色にしています。柔らかいものと丸いものを比較しているのですが?チャートウィンドウでローソク足として描画し、シャドウとボディを表示するように設計されているのに、なぜ別ウィンドウで表示するのですか?また、古いバーの上に新しいバーが描かれることはありません。 バッファーの値が変更されると、同じバーのサイズが変わり、その上に新しいバーが描かれることはありません。MT4にはローソク足の形で描画する方法がないので、ヒストグラムしかできませんが、そこでバッファ値をどう計算するかはご自身の判断になります。ちなみにWmiForもヒストグラムを描画します。 こちらも別ウィンドウにして不具合とにらめっこしましょう )))別ウィンドウのローソク足を、影のあるローソク足に見せるには、アクセラレータのように相対的に0を描画する必要があります。また、All_Starsなどの ようにオブジェクトとして描画することもできます。 Igor Zakharov 2014.11.24 11:50 #7893 皆さん、こんにちは。私の頭は朦朧としています。ドキュメントには答えが見つかりませんでしたが、もしかしたら誰かが遭遇したのかもしれません。こちらはExpert Advisorのライン(正取引の割合)です。Print(OderPluseCount,"/",OderTotal,"=",DoubleToStr((OderPluseCount/OderTotal),2),"=",BestOd,",2/5*100,",100*2/5) を実行します。ジャーナルにプリントする(例)。3/6=0.00=0 0 40同時に、解答が1であれば、1.3/3=1.00=1 0 40変数BestOd=OderPluseCount/OderTotalはdouble型、それ以外はint型です。つまり、1より小さい値に出会うとすぐに、コンパイラはそれを自動的に0に変えてしまう...。定数による最後の2つの式は、意外な結果をもたらします。)様々な置換を試しましたが、1より大きいものはすべて正しい分数部分を持って います。 Alexey Viktorov 2014.11.24 12:02 #7894 Igor_:皆さん、こんにちは。私の頭は朦朧としています。ドキュメントには答えが見つかりませんでしたが、もしかしたら誰かが遭遇したのかもしれません。こちらはExpert Advisorのライン(正取引の割合)です。Print(OderPluseCount,"/",OderTotal,"=",DoubleToStr((OderPluseCount/OderTotal),2),"=",BestOd,",2/5*100,",100*2/5) を実行します。は、それをジャーナルにプリントする(例)。3/6=0.00=0 0 40同時に、解答が1であれば、1.3/3=1.00=1 0 40変数BestOd=OderPluseCount/OderTotalはdouble型、それ以外はint型です。つまり、1より小さい値に出会うとすぐに、コンパイラはそれを自動的に0に変えてしまう...。定数による最後の2つの式は、意外な結果をもたらします。)様々な置換を試しましたが、1より大きいものはすべて正しい分数部分を持っています。お試しくださいDoubleToStr((double)(OderPluseCount/OderTotal),2)を指定します。 Igor Zakharov 2014.11.24 12:13 #7895 AlexeyVik:お試しくださいDoubleToStr((double)(OderPluseCount/OderTotal),2)を指定します。 役にたたない。でも、ありがとうございます ) Victor Nikolaev 2014.11.24 12:20 #7896 Igor_: 役に立ちません。でも、ありがとうございます )DoubleToStr((double)(OderPluseCount/(OderTotal*1.0)),2)を使用する。 Igor Zakharov 2014.11.24 12:33 #7897 Vinin:DoubleToStr((double)(OderPluseCount/(OderTotal*1.0)),2)を使用する。このように動作します、ありがとうございました。シャーマニズムのようだ )))正直なところ、表示ではなく、BestOdの 計算が正しいかどうかの方が心配です。それも修正しなければならなかった。私はこのようにしました。BestOd=(OderPluseCount/(OderTotal*1.0))とする。これには何か説明があるのでしょうか?何しろ、プリントでなければ、このエラーをキャッチするのは非常に難しいのです。どのような場合に発生する可能性があるのでしょうか? Victor Nikolaev 2014.11.24 13:17 #7898 Igor_:このように動作します、ありがとうございました。シャーマニズムのようだ )))正直なところ、表示ではなく、BestOdの 計算が正しいかどうかの方が心配です。それも修正しなければならなかった。私はこのようにしました。BestOd=(OderPluseCount/(OderTotal*1.0))とする。これには何か説明があるのでしょうか?何しろ、プリントでなければ、このエラーをキャッチするのは非常に難しいのですから。どのような場合に飛び出すのでしょうか? 整数値での演算では、結果は整数になります。 Igor Zakharov 2014.11.24 13:20 #7899 参考書の「型変換」の項で、自分で答えを見つけました。Если два значения объединяются бинарным оператором, то перед выполнением операции операнд младшего типа преобразовывается к более старшему типу в соответствии с приоритетом, указанным на схеме: しかし、この方式ではタイプダブルが最も上位となる。そして、私は両方のintを持っていました。したがって、結果は整数になります。より高い型(double, float)の定数を導入し、すべてのint型をそれに変換した。長い間、ドキュメントを参照しながら勉強するのです))) Aleksandr Blinov 2014.11.24 13:34 #7900 こんにちは、以下の質問をさせていただきます。オープンポジションを 修正するEAを作るにはどうしたらよいでしょうか?どうにかして「油を塗る」必要があるのです。何も思いつきません。ぜひともお願いしたい。 1...783784785786787788789790791792793794795796797...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
疑問が解消されたわけではありません。では、まず最初に。
最大値を見つけ、それに対して直線をプロットする。この最大線と現在の最小線との距離がチェックされる。Rmax "を超えると、最大値を示すバー上に矢印が設定されます。矢印は配置されているが、そこにはない。わかりやすくするために、差分を示すバッファ「BufferLow[i]」を追加し、そのデータはエクスプローラウィンドウで確認できるようにしました。
いつもそうなんです。冬は雪を待てない)自分でやりました。
そんな似たような発想に苛まれた人がいたら、ここにそのコードがある。
内蔵のHeiken Ashiは少し物足りない感じですが(745の私だけかな?)、仕組みは明確です。そして、WmiForがどのように構築されているかは不明です
Heiken Ashi コードでは、4 本のバーのヒストグラムからローソク足が描画されます。
つまり、バッファの数が増える(0から3まで)と、新しいバーが古いバーの上に描かれる。順番は以下の通りです。
LowHigh - HighLow - Open - Close。
燭台の順番は、胴と尾のある、正しい外観を得るために、以下のようにします。
max(Open,Close)//thick color line// - min(Open,Close)//thick white// - High//thick color line// - Low//thick white//.
このインジケータをコンパイルして、チャートに貼り付けて、すべての問題点を見てみましょう(写真参照)。
しかし、この方法は、Heiken Ashiと同様に、欠点があります - 各「ろうそく」の下に、我々は、より低いすべてをカバーする背景色の白いループを取得します。しかし、WmiForを使えば、すべてが完璧です。文書化されていない機能?
1枚目:Heiken Ashi(別ウィンドウに配置)、2枚目:WmiFor、背景はわかりやすいように薄緑色にしています。
柔らかいものと丸いものを比較しているのですが?チャートウィンドウでローソク足として描画し、シャドウとボディを表示するように設計されているのに、なぜ別ウィンドウで表示するのですか?また、古いバーの上に新しいバーが描かれることはありません。 バッファーの値が変更されると、同じバーのサイズが変わり、その上に新しいバーが描かれることはありません。
MT4にはローソク足の形で描画する方法がないので、ヒストグラムしかできませんが、そこでバッファ値をどう計算するかはご自身の判断になります。ちなみにWmiForもヒストグラムを描画します。 こちらも別ウィンドウにして不具合とにらめっこしましょう )))
別ウィンドウのローソク足を、影のあるローソク足に見せるには、アクセラレータのように相対的に0を描画する必要があります。また、All_Starsなどの ようにオブジェクトとして描画することもできます。
皆さん、こんにちは。
私の頭は朦朧としています。ドキュメントには答えが見つかりませんでしたが、もしかしたら誰かが遭遇したのかもしれません。こちらはExpert Advisorのライン(正取引の割合)です。
Print(OderPluseCount,"/",OderTotal,"=",DoubleToStr((OderPluseCount/OderTotal),2),"=",BestOd,",2/5*100,",100*2/5) を実行します。
ジャーナルにプリントする(例)。
3/6=0.00=0 0 40
同時に、解答が1であれば、1.
3/3=1.00=1 0 40
変数BestOd=OderPluseCount/OderTotalはdouble型、それ以外はint型です。
つまり、1より小さい値に出会うとすぐに、コンパイラはそれを自動的に0に変えてしまう...。定数による最後の2つの式は、意外な結果をもたらします。)
様々な置換を試しましたが、1より大きいものはすべて正しい分数部分を持って います。
皆さん、こんにちは。
私の頭は朦朧としています。ドキュメントには答えが見つかりませんでしたが、もしかしたら誰かが遭遇したのかもしれません。こちらはExpert Advisorのライン(正取引の割合)です。
Print(OderPluseCount,"/",OderTotal,"=",DoubleToStr((OderPluseCount/OderTotal),2),"=",BestOd,",2/5*100,",100*2/5) を実行します。
は、それをジャーナルにプリントする(例)。
3/6=0.00=0 0 40
同時に、解答が1であれば、1.
3/3=1.00=1 0 40
変数BestOd=OderPluseCount/OderTotalはdouble型、それ以外はint型です。
つまり、1より小さい値に出会うとすぐに、コンパイラはそれを自動的に0に変えてしまう...。定数による最後の2つの式は、意外な結果をもたらします。)
様々な置換を試しましたが、1より大きいものはすべて正しい分数部分を持っています。
お試しください
DoubleToStr((double)(OderPluseCount/OderTotal),2)を指定します。
お試しください
DoubleToStr((double)(OderPluseCount/OderTotal),2)を指定します。
役に立ちません。でも、ありがとうございます )
DoubleToStr((double)(OderPluseCount/(OderTotal*1.0)),2)を使用する。
このように動作します、ありがとうございました。シャーマニズムのようだ )))
正直なところ、表示ではなく、BestOdの 計算が正しいかどうかの方が心配です。それも修正しなければならなかった。
私はこのようにしました。
BestOd=(OderPluseCount/(OderTotal*1.0))とする。
これには何か説明があるのでしょうか?何しろ、プリントでなければ、このエラーをキャッチするのは非常に難しいのです。どのような場合に発生する可能性があるのでしょうか?
このように動作します、ありがとうございました。シャーマニズムのようだ )))
正直なところ、表示ではなく、BestOdの 計算が正しいかどうかの方が心配です。それも修正しなければならなかった。
私はこのようにしました。
BestOd=(OderPluseCount/(OderTotal*1.0))とする。
これには何か説明があるのでしょうか?何しろ、プリントでなければ、このエラーをキャッチするのは非常に難しいのですから。どのような場合に飛び出すのでしょうか?
参考書の「型変換」の項で、自分で答えを見つけました。
Если два значения объединяются бинарным оператором, то перед выполнением операции операнд младшего типа преобразовывается к более старшему типу в соответствии с приоритетом, указанным на схеме:
しかし、この方式ではタイプダブルが最も上位となる。そして、私は両方のintを持っていました。したがって、結果は整数になります。より高い型(double, float)の定数を導入し、すべてのint型をそれに変換した。
長い間、ドキュメントを参照しながら勉強するのです)))