どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 924 1...917918919920921922923924925926927928929930931...1178 新しいコメント Tatianati 2015.08.04 18:45 #9231 こんにちは、アドバイスお願いします。 履歴の最初のバーの高値に等しい高値を探し、見つかったバーのインデックスをHigh_iという変数に格納します。 私はこのように行って います。 highr=High[i]; High_i=0; for(j=i+3;j<=i+m;j++) { if(j>Bars-1) break; if(!ok1) { if(MathAbs(High[j]-highr) <= n*Point) { High_i = j; ここで、3本のバーの前後の高値が、最初のバーの高値より低くなっているかどうかをチェックします。 これをループに組み込む必要がある。if(High[High_i]>High[High_i-3]&&High[High_i]>High[High_i-2]&&High[High_i]>High[High_i-1] && High[High_i]>High[High_i+3]&&High[High_i]>High[High_i+2]&&High[High_i]>High[High_i+1])一方ではこのように確認するようにしています。 for(jl=High_i;jl<=High_i+3;jl++) { // if (High_i!=0); if ( High[High_i]>High[jl]) { cnt1++; if(cnt1>=3) { ok1=true; BuyBuffer[i]=highr+5*Point; } } }よろしくお願いします。 atztek 2015.08.04 21:44 #9232 tatianati: 今確認すると、前後の3本のバーの俳諧は、見つかったバーの俳諧より小さいはずです。 こんな感じかもしれませんね。bool Status_Successful = true; for(int x=(High_i-3); x<=(High_i+3); x++) { if(x==High_i) { continue; } if(High[x]>=High[High_i]) { Status_Successful = false; break; } } if(Status_Successful==true) { .... } Tatianati 2015.08.04 21:56 #9233 atztek: おそらくこんな感じでしょう。ありがとうございます、うまく いきました。しかし、バーの数を増やした後は、このように。for(int x=(High_i-7); x<=(High_i+7); x++) が発生します。 ta_v1_05.mq4' の配列が範囲外 です (174,11) 174行目、これ です。 if(High[x]>=High[High_i])どう すれば直るのか、教えてください。 Daniel Lagoshniak 2015.08.05 05:02 #9234 そして、x が自然数か 0 であることは確かですか? もし high_i = 例えば 6 なら、x = -1 であり、high[-1] はすでに問題です。おそらく 173 行目に if (x < 0) continue というチェックを追加してください。 atztek 2015.08.05 06:30 #9235 tatianatiDanik: x が自然数か 0 かは確かですか? もし high_i = 例えば 6 なら、x = -1、そして high[-1] はすでに問題です。おそらく 173 行目で if (x < 0) continue というチェックを追加するのでしょう。 3本のバーでは、このような「チェック」が行われています。 for(j=i+3;j<=i+m;j++) 他の値については、あちこち変更する必要があります。 まずはこれで問題が解決するのか、それとも他に直すべきところがあるのかを確認してみてはいかがでしょうか。 lufer 2015.08.05 09:35 #9236 注文をクローズする機能があるのですが、なぜか注文がクローズされないのです。void CloseOrders(int otype) { int ClosePrice; if (otype == OP_BUY) ClosePrice=Bid; if (otype == OP_SELL) ClosePrice=Ask; int total = OrdersTotal(); for(int i = total-1; i >= 0; i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype) OrderClose(OrderTicket(),OrderLots(),ClosePrice,Slippage,Yellow); } } TarasBY 2015.08.05 10:07 #9237 lufer: 注文をクローズする機能があるのですが、なぜか注文がクローズされないのです。この価格はintではありえないint ClosePrice; lufer 2015.08.05 10:32 #9238 TarasBY:この価格はintではありえない おうありがとうございます!!! ASZhmyrov 2015.08.05 17:31 #9239 Help me to find a bug in the code, it seems to draw two lines based on ZeroLag MACD indicator data for EUR 001USD and GBP 001USD, but nothing happens, but it's help me to find a bug in the code.以下はそのコードです。#property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Red #property indicator_color2 DarkBlue #property indicator_width1 1 #property indicator_width2 1 //+------------------------------------------------------------------+ extern string ExtParam1="EURUSD"; extern string ExtParam2="GBPUSD"; extern int FastEMA=12; extern int SlowEMA=24; extern int SignalEMA=9; //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; //+------------------------------------------------------------------+ int init() { SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); SetIndexLabel(0,ExtParam1); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,ExtMapBuffer2); SetIndexLabel(1,ExtParam2); //---- return(0); } //+------------------------------------------------------------------+ int start() { int counted_bars = IndicatorCounted(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars --; int limit=Bars-IndicatorCounted(); int bar; for(bar=0; bar<limit; bar++) ExtMapBuffer1[bar]=iCustom(ExtParam1,Period(),"ZeroLag MACD",FastEMA,SlowEMA,SignalEMA,iBarShift(ExtParam1,0,Time[bar],false)); ExtMapBuffer2[bar]=iCustom(ExtParam2,Period(),"ZeroLag MACD",FastEMA,SlowEMA,SignalEMA,iBarShift(ExtParam2,0,Time[bar],false)); return(0); } Any rookie question, so [WARNING CLOSED!] Any newbie i will appreciate your TarasBY 2015.08.05 18:38 #9240 ASZmyrov: ZeroLag MACDはEURUSDとGBPUSDに2本の線を引くべきですが、何も起こらないようです。以下はそのコードです。噂ではIndicatorCounted()が動作しないとか、インジケータの再計算は過去から現在へのカウントの方が正しいとか、他にもコードに間違いがあるようです。追伸:ZeroLag MACD自体も新しい仮想マシ ンに合わせて「調整」する必要があります。 ファイル: zerolagomacdrdbl.mq4 4 kb zerolagtmacd.mq4 4 kb 1...917918919920921922923924925926927928929930931...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは、アドバイスお願いします。
履歴の最初のバーの高値に等しい高値を探し、見つかったバーのインデックスをHigh_iという変数に格納します。
私はこのように行って います。
ここで、3本のバーの前後の高値が、最初のバーの高値より低くなっているかどうかをチェックします。
これをループに組み込む必要がある。
一方ではこのように確認するようにしています。
よろしくお願いします。
今確認すると、前後の3本のバーの俳諧は、見つかったバーの俳諧より小さいはずです。
おそらくこんな感じでしょう。
ありがとうございます、うまく いきました。
しかし、バーの数を増やした後は、このように。
が発生します。
ta_v1_05.mq4' の配列が範囲外 です (174,11)174行目、これ です。
どう すれば直るのか、教えてください。
Danik: x が自然数か 0 かは確かですか? もし high_i = 例えば 6 なら、x = -1、そして high[-1] はすでに問題です。おそらく 173 行目で if (x < 0) continue というチェックを追加するのでしょう。
他の値については、あちこち変更する必要があります。
まずはこれで問題が解決するのか、それとも他に直すべきところがあるのかを確認してみてはいかがでしょうか。
注文をクローズする機能があるのですが、なぜか注文がクローズされないのです。
この価格はintではありえない
int ClosePrice;
この価格はintではありえない
ZeroLag MACDはEURUSDとGBPUSDに2本の線を引くべきですが、何も起こらないようです。以下はそのコードです。
噂ではIndicatorCounted()が動作しないとか、インジケータの再計算は過去から現在へのカウントの方が正しいとか、他にもコードに間違いがあるようです。
追伸:ZeroLag MACD自体も新しい仮想マシ ンに合わせて「調整」する必要があります。