コーディングの方法は? - ページ 96 1...8990919293949596979899100101102103...347 新しいコメント David McCollum 2008.05.22 15:06 #951 wolfe 2008.05.22 19:44 #952 みなさん、こんにちは。 これは愚かなコーディングの質問で、以前どこかで見たことがあると思いますが、助けが必要です。 私はカスタムインジケータを コーディングしていますが、私がしたいのは、新しいバーの始まりだけで、現在の買値を読み取ることなのです。 新しいティックが入るたびに現在のバーのオープン値が返され続けるので、Open[0]を使うわけにはいきません。 新しいバーが形成されるまで、一度だけ値を返したいのです。 私はここで非常に単純な何かを見逃していることを知っているが、それを理解するのに少し苦労しています。 どなたか助けていただけませんか? ありがとうございます。 -wolfe omelette 2008.05.23 00:24 #953 wolfe: 皆さん、こんにちは。これは愚かなコーディングの質問で、前にどこかで見たことがあると思いますが、助けが必要です。 カスタムインジケーターをコーディングしているのですが、新しいバーの開始時に現在の買値を読み取るようにしたいだけなのです。 新しいティックが入るたびに現在のバーのオープン値が返され続けるので、Open[0]を使うわけにはいきません。 新しいバーが形成されるまで、一度だけ値を返したいのです。 私はここで非常に単純な何かを見逃していることを知っているが、それを理解するのに少し苦労しています。 どなたか助けていただけませんか? ありがとうございます。 -ウォルフ 現在のバーの時間(Time[0])を保存します。この値が変わると新しいバーができるので、価格を取得し、新しい値を保存し、それを繰り返します... wolfe 2008.05.23 00:54 #954 omelette: 現在のバーの時間(Time[0])を保存するだけです。この値が変わると新しいバーができるので、価格を取得し、新しい値を保存し、それを繰り返します...。 オムレツありがとうございます。 思いつくべきでした!ちょっと自分にがっかりです。 ありがとうございます。 削除済み 2008.05.25 05:00 #955 誰かこのコードに間違ったことをしているイムを私に示すことができますか? 私はそれにタイムフレーム日足のような他のタイムフレームを追加したいのですが、私は何が間違っているのかわかりません。 //+---------------------------------------------------------+//| #MTF_Hi_Low_Middle.mq4//| Darkkillerによるspudfibo.Upgradeからのベース //: 修正に協力してくれたMladenに感謝します。 //+------------------------------------------------------------------+ #property indicator_chart_window extern string note1 = "H4 Higher,Middle,Lower colors"; extern color H4HigherColor = DeepSkyBlue; extern color H4MiddleColor = Yellow; extern color H4LowerColor = HotPink; extern color H4MiddleColor = Yellow; extern color H4LowerColor = HotPink; extern string note2 = "Draw H4 Higher,Lower and Middle?"; extern bool H4HiLow = true; extern bool H4Mid = true; extern string note3 = "D1 Higher,Middle,Lower colors"; extern color D1HigherColor = DeepSkyBlue; extern color D1MiddleColor = Yellow; extern color D1LowerColor = HotPink; extern string note4 = "D1 Higher,Lower and Middleを描画しますか?"; extern bool D1HiLow = true; extern bool D1Mid = true; double HiPrice, LoPrice, Range, D1HiPrice, D1LoPrice, D1Range; datetime StartTime; int init() { return(0); } int deinit() { ObjectDelete("H4Higher")。 ObjectDelete("H4Lower")。 ObjectDelete("H4Middle")。 ObjectDelete("D1Higher")。 ObjectDelete("D1Lower")。 ObjectDelete("D1Middle")。 return(0); } //+------------------------------------------------------------------+ //| フィボを描画する //+------------------------------------------------------------------+ int DrawFibo() { if(H4HiLow) { if(ObjectFind("H4Higher") == -1) ObjectCreate("H4Higher", OBJ_FIBO, 0, StartTime, HiPrice+Range, StartTime, HiPrice)とする。 さもなくば { ObjectSet("H4Higher",OBJPROP_TIME2, StartTime); ObjectSet("H4Higher",OBJPROP_TIME1,StartTime)。 ObjectSet("H4Higher",OBJPROP_PRICE1,HiPrice+Range); ObjectSet("H4Higher",OBJPROP_PRICE1,HiPrice+Range); ObjectSet("H4Higher",OBJPROP_PRICE2,HiPrice)。 ObjectSet("H4Higher", OBJPROP_LEVELCOLOR, H4HigherColor); ObjectSet("H4Higher", OBJPROP_FIBOLEVELS,1); } ObjectSet("H4Higher", OBJPROP_FIBOLEVELS,1); ObjectSet("H4Higher", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("H4Higher", 0, "H4 HIGHER- %$"); ObjectSet("H4Higher", OBJPROP_FIRSTLEVEL+0, 0.0); ObjectSet("H4Higher", OBJPROP_RAY,true); ObjectSet("H4Higher", OBJPROP_BACK,true)。 ObjectSet("H4Higher", OBJPROP_COLOR,EMPTY)。 if(ObjectFind("H4Lower") == -1) ObjectCreate("H4Lower", OBJ_FIBO, 0, StartTime, LoPrice-Range, StartTime, LoPrice)を実行します。 さもなくば { ObjectSet("H4Lower", OBJPROP_TIME2, StartTime).ObjectSet("H4Lower", OBJPROP_TIME2, StartTime); ObjectSet("H4Lower", OBJPROP_TIME1, StartTime); ObjectSet("H4Lower", OBJPROP_PRICE1,LoPrice-Range); ObjectSet("H4Lower", OBJPROP_PRICE1,LoPrice-Range); ObjectSet("H4Lower", OBJPROP_PRICE2,LoPrice); ObjectSet("H4Lower", OBJPROP_LEVELCOLOR, H4LowerColor); ObjectSet("H4Lower", OBJPROP_FIBOLEVELS, 1); } ObjectSet("H4Lower", OBJPROP_FIBOLEVELS, 1); ObjectSet("H4Lower", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("H4Lower", 0, "H4 LOWER - %$"); ObjectSet("H4Lower", OBJPROP_FIRSTLEVEL+0, 0.0);。 ObjectSet("H4Lower", OBJPROP_RAY, true); ObjectSet("H4Lower", OBJPROP_BACK, true); ObjectSet("H4Lower", OBJPROP_COLOR, EMPTY); } if(D1HiLow) { if(ObjectFind("D1Higher") == -1) ObjectCreate("D1Higher", OBJ_FIBO, 0, D1StartTime, D1HiPrice+D1Range, D1StartTime, D1HiPrice); さもなくば { ObjectSet("D1Higher", OBJPROP_TIME2, D1StartTime).ObjectSet("D1Higher", OBJPROP_TIME2, D1StartTime); ObjectSet("D1Higher", OBJPROP_TIME1, D1StartTime); else { ObjectSet("D1Higher", OBJPROP_TIME1, D1StartTime); ObjectSet("D1Higher", OBJPROP_PRICE1, D1HiPrice+D1Range); ObjectSet("D1Higher", OBJPROP_PRICE1, D1HiPrice+D1Range); ObjectSet("D1Higher", OBJPROP_PRICE2, D1HiPrice); } ObjectSet("D1Higher", OBJPROP_LEVELCOLOR, D1HigherColor); } ObjectSet("D1Higher", OBJPROP_LEVELCOLOR, D1HigherColor) ObjectSet("D1Higher", OBJPROP_FIBOLEVELS,1); } ObjectSet("D1Higher", OBJPROP_FIBOLEVELS,1); ObjectSet("D1Higher", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("D1Higher", 0, "H4 HIGHER- %$").ObjectSet("D1Higher",OBJPROP_FIRSTLEVEL+0,0);オブジェクトセット フィボデスクリプション ObjectSet("D1Higher", OBJPROP_RAY, true); ObjectSet("D1Higher", OBJPROP_BACK, true); ObjectSet("D1Higher", OBJPROP_COLOR, EMPTY); if(ObjectFind("D1Lower") == -1) ObjectCreate("D1Lower", OBJ_FIBO, 0, D1StartTime, D1LoPrice-D1Range, D1StartTime, 1LoPrice) を実行します。 さもなくば { ObjectSet("D1Lower", OBJPROP_TIME2, D1StartTime); ObjectSet("D1Lower", OBJPROP_TIME1, D1StartTime); ObjectSet("D1Lower", OBJPROP_PRICE1, D1LoPrice-D1Range); ObjectSet("D1Lower", OBJPROP_PRICE1, D1LoPrice-D1Range); ObjectSet("D1Lower", OBJPROP_PRICE2, D1LoPrice); ObjectSet("D1Lower", OBJPROP_LEVELCOLOR, D1LowerColor); } ObjectSet("D1Lower", OBJPROP_LEVELCOLOR, D1LowerColor); ObjectSet("D1Lower", OBJPROP_FIBOLEVELS,1); ObjectSet("D1Lower", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("D1Lower", 0, "H4 LOWER - %$"); ObjectSet("D1Lower", OBJPROP_RAY, true).ObjectSet("D1Lower", "OBJPROP_RAY")。 ObjectSet("D1Lower", OBJPROP_BACK, true); ObjectSet("D1Lower", OBJPROP_COLOR, EMPTY); if(H4Mid) if(ObjectFind("H4Middle") == -1) ObjectCreate("H4Middle", OBJ_FIBO, 0, StartTime, HiPrice, StartTime+PERIOD_H4*60, LoPrice); さもなくば { ObjectSet("H4Middle", OBJPROP_TIME2, StartTime).ObjectSet("H4Middle", OBJPROP_TIME2, StartTime); ObjectSet("H4Middle", OBJPROP_TIME1, StartTime+PERIOD_H4*60); else { ObjectSet("H4Middle", OBJPROP_TIME1, StartTime+PERIOD_H4*60); ObjectSet("H4Middle", OBJPROP_PRICE1, HiPrice); ObjectSet("H4Middle", OBJPROP_PRICE1, HiPrice); ObjectSet("H4Middle", OBJPROP_PRICE2, LoPrice); ObjectSet("H4Middle", OBJPROP_LEVELCOLOR, H4MiddleColor); } ObjectSet("H4Middle", OBJPROP_LEVELCOLOR, H4MiddleColor) ObjectSet("H4Middle", OBJPROP_FIBOLEVELS,1); } ObjectSet("H4Middle", OBJPROP_FIBOLEVELS,1); ObjectSet("H4Middle", OBJPROP_FIRSTLEVEL+0,0.500); ObjectSetFiboDescription("H4Middle", 0, "H4 MIDDLE - %$"); ObjectSet("H4Middle", OBJPROP_RAY, true); ObjectSet("H4Middle", OBJPROP_BACK, true); ObjectSet("H4Middle", OBJPROP_BACK, true); ObjectSet("H4Middle", OBJPROP_COLOR, EMPTY); } if(D1Mid) if(ObjectFind("D1Middle") == -1) ObjectCreate("D1Middle", OBJ_FIBO, 0, D1StartTime, D1HiPrice, D1StartTime+PERIOD_D1*60, D1LoPrice); さもなくば { ObjectSet("D1Middle", OBJPROP_TIME2, D1StartTime); ObjectSet("D1Middle", OBJPROP_TIME1, D1StartTime+PERIOD_D1*60); else { ObjectSet("D1Middle", OBJPROP_TIME1, D1StartTime+PERIOD_D1*60); ObjectSet("D1Middle", OBJPROP_PRICE1, D1HiPrice); ObjectSet("D1Middle", OBJPROP_PRICE1, D1HiPrice); ObjectSet("D1Middle", OBJPROP_PRICE2, D1LoPrice); ObjectSet("D1Middle", OBJPROP_PRICE2, D1LoPrice) ObjectSet("D1Middle", OBJPROP_LEVELCOLOR, D1MiddleColor); } ObjectSet("D1Middle", OBJPROP_LEVELCOLOR, D1MiddleColor) ObjectSet("D1Middle", OBJPROP_FIBOLEVELS,1); ObjectSet("D1Middle", OBJPROP_FIRSTLEVEL+0,0.500); ObjectSetFiboDescription("D1Middle", 0, "D1 MIDDLE - %$"); ObjectSet("D1Middle", OBJPROP_RAY, true).ObjectSet("D1Middle")を実行します。 ObjectSet("D1Middle", OBJPROP_BACK, true); ObjectSet("D1Middle", OBJPROP_COLOR, EMPTY); //+-----------------------------------------------+ //| インジケータスタート機能 //+-----------------------------------------------+ int start() { int shift = iBarShift(NULL, PERIOD_D1, Time[0]) + 1; // H4 HiPrice = iHigh(NULL, PERIOD_H4, shift); LoPrice = iLow (NULL, PERIOD_H4, shift); // H4 HiPrice = iHigh (NULL, PERIOD_H4, shift); StartTime = iTime(NULL, PERIOD_H4, shift); D1HiPrice = iHigh(NULL, PERIOD_D1, shift); D1LoPrice = iLow (NULL, PERIOD_D1, shift); D1StartTime = iTime(NULL, PERIOD_D1, shift); D1LoPrice = iLow(NULL, PERIOD_D1, shift); if(TimeDayOfWeek(StartTime) == 0/*Sunday*/) {//Add fridays high and low HiPrice = MathMax(HiPrice, iHigh(NULL,PERIOD_H4, shift+1))です。 LoPrice = MathMin(LoPrice, iLow(NULL,PERIOD_H4, shift+1)); D1HiPrice = MathMax(HiPrice, iHigh(NULL,PERIOD_H4, shift+1)); D1HiPrice = MathMax(D1HiPrice, iHigh(NULL, PERIOD_D1, shift+1)); D1LoPrice = MathMin(D1HiPrice, iHigh(NULL, PERIOD_D1, shift+1)); D1LoPrice = MathMin(D1LoPrice, iLow(NULL, PERIOD_D1, shift+1))です。 } レンジ = HiPrice - LoPrice; D1Range = D1HiPrice - D1LoPrice; D1Range = D1HiPrice - D1LoPrice; DrawFibo()を実行。 return(0); } //+------------------------------+ この下にH4高値安値中値のオリジナルを添付します。 ファイル: h4_hi_low_middle_dk_v1.mq4 4 kb mtf_hi_low_middle_dknot_work.mq4 8 kb Beno 2008.05.26 10:53 #956 デルタストップをストップロスとして 使用しようとしています。 とトレーリングストップとして使用しようとしています。EAを添付します。 これを行うことは可能でしょうか? ファイル: euroform_v_3.0.mq4 21 kb TheRumpledOne 2008.05.26 13:52 #957 //+------------------------------------------------------------------+ || MODIFIED BY Avery T. Horton, Jr.別名 TheRumpledOne|||||||。 // // Google検索 "therumpledone mt4" // //+------------------------------------------------------------------+ //| _Fibo_Hi_Low_Middle.mq4(フィボ ハイロー ミドル)。 //| Darkkillerによるspudfibo.Upgradeのベース //: 修正に協力してくれた Mladen に感謝します。 //+------------------------------------------------------------------+ #property indicator_chart_window extern int myChartPeriod = 0 ; extern string note1 = "Higher,Middle,Lower colors"; extern color HigherColor = DeepSkyBlue; extern color MiddleColor = Yellow; extern color LowerColor = HotPink; extern color MiddleColor = Yellow; extern color LowColor = HotPink; extern string note2 = "Draw middle?"。 extern bool HiLow = true; extern bool Mid = true; double HiPrice, LoPrice, Range; datetime StartTime; 文字列 tChartPeriod, tHigher, tLower, tMiddle ; int init() { if(myChartPeriod == 0) { myChartPeriod = Period() ; }. tChartPeriod = TimeFrameToString(myChartPeriod) ; tHigher = tChartPeriod + "H" ; tLower = tChartPeriod + "L" ; tHigher = tChartPeriod + "H" ; tMiddle = tChartPeriod + "M" ; return(0); } int deinit() { ObjectDelete(tHigher); ObjectDelete(tLower)を実行します。 ObjectDelete(tMiddle)。 return(0); } //+------------------------------------------------------------------+ //| フィボを描画する //+------------------------------------------------------------------+ int DrawFibo() { if(HiLow) { if(ObjectFind(tHigher) == -1) ObjectCreate(tHigher,OBJ_FIBO,0,StartTime,HiPrice+Range,StartTime,HiPrice); さもなくば { ObjectSet(tHigher,OBJPROP_TIME2, StartTime); ObjectSet(tHigher,OBJPROP_TIME1, StartTime); ObjectSet(tHigher,OBJPROP_PRICE1,HiPrice+Range); ObjectSet(tHigher,OBJPROP_PRICE1,HiPrice+Range); ObjectSet(tHigher,OBJPROP_PRICE2,HiPrice)とします。 } ObjectSet(tHigher,OBJPROP_LEVELCOLOR,HigherColor)。 ObjectSet(tHigher,OBJPROP_FIBOLEVELS,1); } ObjectSet(tHigher,OBJPROP_FIBOLEVELS,1); ObjectSet(tHigher,OBJPROP_FIRSTLEVEL+0,0.0); ObjectSet(tHigher,OBJPROP_FIRSTLEVEL+0,0.0) ObjectSetFiboDescription(tHigher,0,tChartPeriod+" HIGHER- %$"); ObjectSetFiboDescription(tHigher,0,tChartPeriod+" HIGHER- %$"); ObjectSet(tHigher,OBJPROP_RAY,true)。 ObjectSet(tHigher,OBJPROP_BACK,true)。 ObjectSet(tHigher,OBJPROP_COLOR,EMPTY)。 if(ObjectFind(tLower) == -1) ObjectCreate(tLower,OBJ_FIBO,0,StartTime,LoPrice-Range,StartTime,LoPrice); さもなくば { ObjectSet(tLower,OBJPROP_TIME2, StartTime); ObjectSet(tLower,OBJPROP_TIME1, StartTime); ObjectSet(tLower,OBJPROP_PRICE1,LoPrice-Range); ObjectSet(tLower,OBJPROP_PRICE1,LoPrice-Range); ObjectSet(tLower,OBJPROP_PRICE2,LoPrice); ObjectSet(tLower,OBJPROP_PRICE2,LoPrice); } ObjectSet(tLower,OBJPROP_LEVELCOLOR,LowerColor)を指定します。 ObjectSet(tLower,OBJPROP_FIBOLEVELS,1)を指定します。 ObjectSet(tLower,OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription(tLower,0,tChartPeriod+" LOWER - %$"); ObjectSetFiboDescription(tLower,0,tChartPeriod+" LOWER - %$"); ObjectSet(tLower,OBJPROP_RAY,true)。 ObjectSet(tLower,OBJPROP_BACK,true)。 ObjectSet(tLower,OBJPROP_COLOR,EMPTY)。 } if(ミッド) if(ObjectFind(tMiddle) == -1) ObjectCreate(tMiddle,OBJ_FIBO,0,StartTime,HiPrice,StartTime+myChartPeriod*60,LoPrice); さもなくば { ObjectSet(tMiddle,OBJPROP_TIME2, StartTime); ObjectSet(tMiddle,OBJPROP_TIME1, StartTime+myChartPeriod*60); else { ObjectSet(tMiddle,OBJPROP_TIME1, StartTime+myChartPeriod*60); ObjectSet(tMiddle,OBJPROP_PRICE1,HiPrice); ObjectSet(tMiddle,OBJPROP_PRICE1,HiPrice); ObjectSet(tMiddle,OBJPROP_PRICE2,LoPrice)。 ObjectSet(tMiddle,OBJPROP_LEVELCOLOR,MiddleColor)。 ObjectSet(tMiddle,OBJPROP_FIBOLEVELS,1)を指定します。 ObjectSet(tMiddle,OBJPROP_FIRSTLEVEL+0,0.500)を実行します。 ObjectSetFiboDescription(tMiddle,0,tChartPeriod+" MIDDLE - %$"); ObjectSetFiboDescription(tMiddle,0,tChartPeriod+" %$"); ObjectSet(tMiddle,OBJPROP_RAY,true)。 ObjectSet(tMiddle,OBJPROP_BACK,true)。 ObjectSet(tMiddle,OBJPROP_COLOR,EMPTY)。 } //+------------------------------------------------------------------+ //| インジケータ起動機能 //+------------------------------------------------------------------+ int start() { int shift = iBarShift(NULL,myChartPeriod,Time[0])+1;・・・? HiPrice = iHigh(NULL,myChartPeriod,shift)。 LoPrice = iLow (NULL,myChartPeriod,shift)。 StartTime = iTime(NULL,myChartPeriod,shift)。 if(TimeDayOfWeek(StartTime)==0/*Sunday*/) {//Add fridays high and low HiPrice = MathMax(HiPrice,iHigh(NULL,myChartPeriod,shift+1)); LoPrice = MathMin(LoPrice,iLow(NULL,myChartPeriod,shift+1)); } レンジ=HiPrice-LoPrice; DrawFibo()を実行します。 // Comment( "Period_", tChartPeriod ) ; return(0); } //+------------------------------------------------------------------+ 文字列 TimeFrameToString(int tf) { 文字列 tfs; switch(tf) { case PERIOD_M1: tfs="M1" ; break; case PERIOD_M5: tfs="M5" ; break; case PERIOD_M15: tfs="M15" ; break; case PERIOD_M30: tfs="M30" ; break; case PERIOD_M30: tfs="M30" ; break; case PERIOD_H1: tfs="M1" ; break; case PERIOD_H1: tfs="H1" ; break; ケースPERIOD_H4: tfs="H4" ; break; ケースPERIOD_D1: tfs="D1" ; break; case PERIOD_W1: tfs="W1" ; break; case PERIOD_MN1: tfs="MN "とする。 } return(tfs); } という感じでやってみました。 P.S. なぜ私の添付ファイルは削除されてしまうのでしょうか? ファイル: highlower.gif 14 kb matrixebiz 2008.05.27 00:15 #958 MoveStopOnce こんにちは、このMoveStopOnceコードを動作するようにしようとしているが、売り取引はコードによって変更されないようです、ちょうど買い。何か問題があるのでしょうか? //Buys //MoveOnce if(MoveStopOnce && MoveStopWhenPrice > 0) { if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) { if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) { OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red); if (!EachTickMode) BarCount = Bars; continue; } } } [/code] [code] //Sells //MoveOnce if(MoveStopOnce && MoveStopWhenPrice > 0) { if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) { if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) { OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red); if (!EachTickMode) BarCount = Bars; continue; } } } BigBe 2008.05.27 13:50 #959 MoveStopOnce この問題が発生したことがあります。 追加する必要があると思います。 if (OrderType() == OP_BUY) を追加する必要があると思います。 そして、OP_SELLを売りのコードに使用します。 ビッグベー matrixebiz 2008.05.27 14:25 #960 Big Be: 私はこの問題がありました。追加する必要があると思います。 if (OrderType() == OP_BUY) を追加する必要があります。 そして、売りコードにはOP_SELLを使用します。 ビッグベー OK、家に帰ったらやってみますが、それならなぜすでに買い注文でまだ動作するのでしょうか? ありがとうございます。 1...8990919293949596979899100101102103...347 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
みなさん、こんにちは。
これは愚かなコーディングの質問で、以前どこかで見たことがあると思いますが、助けが必要です。
私はカスタムインジケータを コーディングしていますが、私がしたいのは、新しいバーの始まりだけで、現在の買値を読み取ることなのです。 新しいティックが入るたびに現在のバーのオープン値が返され続けるので、Open[0]を使うわけにはいきません。 新しいバーが形成されるまで、一度だけ値を返したいのです。
私はここで非常に単純な何かを見逃していることを知っているが、それを理解するのに少し苦労しています。 どなたか助けていただけませんか?
ありがとうございます。
-wolfe
皆さん、こんにちは。
これは愚かなコーディングの質問で、前にどこかで見たことがあると思いますが、助けが必要です。
カスタムインジケーターをコーディングしているのですが、新しいバーの開始時に現在の買値を読み取るようにしたいだけなのです。 新しいティックが入るたびに現在のバーのオープン値が返され続けるので、Open[0]を使うわけにはいきません。 新しいバーが形成されるまで、一度だけ値を返したいのです。
私はここで非常に単純な何かを見逃していることを知っているが、それを理解するのに少し苦労しています。 どなたか助けていただけませんか?
ありがとうございます。
-ウォルフ現在のバーの時間(Time[0])を保存します。この値が変わると新しいバーができるので、価格を取得し、新しい値を保存し、それを繰り返します...
現在のバーの時間(Time[0])を保存するだけです。この値が変わると新しいバーができるので、価格を取得し、新しい値を保存し、それを繰り返します...。
オムレツありがとうございます。
思いつくべきでした!ちょっと自分にがっかりです。
ありがとうございます。
誰かこのコードに間違ったことをしているイムを私に示すことができますか?
私はそれにタイムフレーム日足のような他のタイムフレームを追加したいのですが、私は何が間違っているのかわかりません。
//| #MTF_Hi_Low_Middle.mq4
//| Darkkillerによるspudfibo.Upgradeからのベース
//: 修正に協力してくれたMladenに感謝します。
//+------------------------------------------------------------------+
#property indicator_chart_window
extern string note1 = "H4 Higher,Middle,Lower colors";
extern color H4HigherColor = DeepSkyBlue;
extern color H4MiddleColor = Yellow;
extern color H4LowerColor = HotPink; extern color H4MiddleColor = Yellow; extern color H4LowerColor = HotPink;
extern string note2 = "Draw H4 Higher,Lower and Middle?";
extern bool H4HiLow = true;
extern bool H4Mid = true;
extern string note3 = "D1 Higher,Middle,Lower colors";
extern color D1HigherColor = DeepSkyBlue;
extern color D1MiddleColor = Yellow;
extern color D1LowerColor = HotPink;
extern string note4 = "D1 Higher,Lower and Middleを描画しますか?";
extern bool D1HiLow = true;
extern bool D1Mid = true;
double HiPrice, LoPrice, Range, D1HiPrice, D1LoPrice, D1Range;
datetime StartTime;
int init()
{
return(0);
}
int deinit()
{
ObjectDelete("H4Higher")。
ObjectDelete("H4Lower")。
ObjectDelete("H4Middle")。
ObjectDelete("D1Higher")。
ObjectDelete("D1Lower")。
ObjectDelete("D1Middle")。
return(0);
}
//+------------------------------------------------------------------+
//| フィボを描画する
//+------------------------------------------------------------------+
int DrawFibo()
{
if(H4HiLow)
{
if(ObjectFind("H4Higher") == -1)
ObjectCreate("H4Higher", OBJ_FIBO, 0, StartTime, HiPrice+Range, StartTime, HiPrice)とする。
さもなくば
{
ObjectSet("H4Higher",OBJPROP_TIME2, StartTime);
ObjectSet("H4Higher",OBJPROP_TIME1,StartTime)。
ObjectSet("H4Higher",OBJPROP_PRICE1,HiPrice+Range); ObjectSet("H4Higher",OBJPROP_PRICE1,HiPrice+Range);
ObjectSet("H4Higher",OBJPROP_PRICE2,HiPrice)。
ObjectSet("H4Higher", OBJPROP_LEVELCOLOR, H4HigherColor);
ObjectSet("H4Higher", OBJPROP_FIBOLEVELS,1); } ObjectSet("H4Higher", OBJPROP_FIBOLEVELS,1);
ObjectSet("H4Higher", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("H4Higher", 0, "H4 HIGHER- %$"); ObjectSet("H4Higher", OBJPROP_FIRSTLEVEL+0, 0.0);
ObjectSet("H4Higher", OBJPROP_RAY,true);
ObjectSet("H4Higher", OBJPROP_BACK,true)。
ObjectSet("H4Higher", OBJPROP_COLOR,EMPTY)。
if(ObjectFind("H4Lower") == -1)
ObjectCreate("H4Lower", OBJ_FIBO, 0, StartTime, LoPrice-Range, StartTime, LoPrice)を実行します。
さもなくば
{
ObjectSet("H4Lower", OBJPROP_TIME2, StartTime).ObjectSet("H4Lower", OBJPROP_TIME2, StartTime);
ObjectSet("H4Lower", OBJPROP_TIME1, StartTime);
ObjectSet("H4Lower", OBJPROP_PRICE1,LoPrice-Range); ObjectSet("H4Lower", OBJPROP_PRICE1,LoPrice-Range);
ObjectSet("H4Lower", OBJPROP_PRICE2,LoPrice);
ObjectSet("H4Lower", OBJPROP_LEVELCOLOR, H4LowerColor);
ObjectSet("H4Lower", OBJPROP_FIBOLEVELS, 1); } ObjectSet("H4Lower", OBJPROP_FIBOLEVELS, 1);
ObjectSet("H4Lower", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("H4Lower", 0, "H4 LOWER - %$"); ObjectSet("H4Lower", OBJPROP_FIRSTLEVEL+0, 0.0);。
ObjectSet("H4Lower", OBJPROP_RAY, true);
ObjectSet("H4Lower", OBJPROP_BACK, true);
ObjectSet("H4Lower", OBJPROP_COLOR, EMPTY);
}
if(D1HiLow)
{
if(ObjectFind("D1Higher") == -1)
ObjectCreate("D1Higher", OBJ_FIBO, 0, D1StartTime, D1HiPrice+D1Range, D1StartTime, D1HiPrice);
さもなくば
{
ObjectSet("D1Higher", OBJPROP_TIME2, D1StartTime).ObjectSet("D1Higher", OBJPROP_TIME2, D1StartTime);
ObjectSet("D1Higher", OBJPROP_TIME1, D1StartTime); else { ObjectSet("D1Higher", OBJPROP_TIME1, D1StartTime);
ObjectSet("D1Higher", OBJPROP_PRICE1, D1HiPrice+D1Range); ObjectSet("D1Higher", OBJPROP_PRICE1, D1HiPrice+D1Range);
ObjectSet("D1Higher", OBJPROP_PRICE2, D1HiPrice);
}
ObjectSet("D1Higher", OBJPROP_LEVELCOLOR, D1HigherColor); } ObjectSet("D1Higher", OBJPROP_LEVELCOLOR, D1HigherColor)
ObjectSet("D1Higher", OBJPROP_FIBOLEVELS,1); } ObjectSet("D1Higher", OBJPROP_FIBOLEVELS,1);
ObjectSet("D1Higher", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("D1Higher", 0, "H4 HIGHER- %$").ObjectSet("D1Higher",OBJPROP_FIRSTLEVEL+0,0);オブジェクトセット フィボデスクリプション
ObjectSet("D1Higher", OBJPROP_RAY, true);
ObjectSet("D1Higher", OBJPROP_BACK, true);
ObjectSet("D1Higher", OBJPROP_COLOR, EMPTY);
if(ObjectFind("D1Lower") == -1)
ObjectCreate("D1Lower", OBJ_FIBO, 0, D1StartTime, D1LoPrice-D1Range, D1StartTime, 1LoPrice) を実行します。
さもなくば
{
ObjectSet("D1Lower", OBJPROP_TIME2, D1StartTime);
ObjectSet("D1Lower", OBJPROP_TIME1, D1StartTime);
ObjectSet("D1Lower", OBJPROP_PRICE1, D1LoPrice-D1Range); ObjectSet("D1Lower", OBJPROP_PRICE1, D1LoPrice-D1Range);
ObjectSet("D1Lower", OBJPROP_PRICE2, D1LoPrice);
ObjectSet("D1Lower", OBJPROP_LEVELCOLOR, D1LowerColor); } ObjectSet("D1Lower", OBJPROP_LEVELCOLOR, D1LowerColor);
ObjectSet("D1Lower", OBJPROP_FIBOLEVELS,1);
ObjectSet("D1Lower", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("D1Lower", 0, "H4 LOWER - %$");
ObjectSet("D1Lower", OBJPROP_RAY, true).ObjectSet("D1Lower", "OBJPROP_RAY")。
ObjectSet("D1Lower", OBJPROP_BACK, true);
ObjectSet("D1Lower", OBJPROP_COLOR, EMPTY);
if(H4Mid)
if(ObjectFind("H4Middle") == -1)
ObjectCreate("H4Middle", OBJ_FIBO, 0, StartTime, HiPrice, StartTime+PERIOD_H4*60, LoPrice);
さもなくば
{
ObjectSet("H4Middle", OBJPROP_TIME2, StartTime).ObjectSet("H4Middle", OBJPROP_TIME2, StartTime);
ObjectSet("H4Middle", OBJPROP_TIME1, StartTime+PERIOD_H4*60); else { ObjectSet("H4Middle", OBJPROP_TIME1, StartTime+PERIOD_H4*60);
ObjectSet("H4Middle", OBJPROP_PRICE1, HiPrice); ObjectSet("H4Middle", OBJPROP_PRICE1, HiPrice);
ObjectSet("H4Middle", OBJPROP_PRICE2, LoPrice);
ObjectSet("H4Middle", OBJPROP_LEVELCOLOR, H4MiddleColor); } ObjectSet("H4Middle", OBJPROP_LEVELCOLOR, H4MiddleColor)
ObjectSet("H4Middle", OBJPROP_FIBOLEVELS,1); } ObjectSet("H4Middle", OBJPROP_FIBOLEVELS,1);
ObjectSet("H4Middle", OBJPROP_FIRSTLEVEL+0,0.500); ObjectSetFiboDescription("H4Middle", 0, "H4 MIDDLE - %$");
ObjectSet("H4Middle", OBJPROP_RAY, true);
ObjectSet("H4Middle", OBJPROP_BACK, true); ObjectSet("H4Middle", OBJPROP_BACK, true);
ObjectSet("H4Middle", OBJPROP_COLOR, EMPTY);
}
if(D1Mid)
if(ObjectFind("D1Middle") == -1)
ObjectCreate("D1Middle", OBJ_FIBO, 0, D1StartTime, D1HiPrice, D1StartTime+PERIOD_D1*60, D1LoPrice);
さもなくば
{
ObjectSet("D1Middle", OBJPROP_TIME2, D1StartTime);
ObjectSet("D1Middle", OBJPROP_TIME1, D1StartTime+PERIOD_D1*60); else { ObjectSet("D1Middle", OBJPROP_TIME1, D1StartTime+PERIOD_D1*60);
ObjectSet("D1Middle", OBJPROP_PRICE1, D1HiPrice); ObjectSet("D1Middle", OBJPROP_PRICE1, D1HiPrice);
ObjectSet("D1Middle", OBJPROP_PRICE2, D1LoPrice); ObjectSet("D1Middle", OBJPROP_PRICE2, D1LoPrice)
ObjectSet("D1Middle", OBJPROP_LEVELCOLOR, D1MiddleColor); } ObjectSet("D1Middle", OBJPROP_LEVELCOLOR, D1MiddleColor)
ObjectSet("D1Middle", OBJPROP_FIBOLEVELS,1);
ObjectSet("D1Middle", OBJPROP_FIRSTLEVEL+0,0.500); ObjectSetFiboDescription("D1Middle", 0, "D1 MIDDLE - %$");
ObjectSet("D1Middle", OBJPROP_RAY, true).ObjectSet("D1Middle")を実行します。
ObjectSet("D1Middle", OBJPROP_BACK, true);
ObjectSet("D1Middle", OBJPROP_COLOR, EMPTY);
//+-----------------------------------------------+
//| インジケータスタート機能
//+-----------------------------------------------+
int start()
{
int shift = iBarShift(NULL, PERIOD_D1, Time[0]) + 1; // H4
HiPrice = iHigh(NULL, PERIOD_H4, shift);
LoPrice = iLow (NULL, PERIOD_H4, shift); // H4 HiPrice = iHigh (NULL, PERIOD_H4, shift);
StartTime = iTime(NULL, PERIOD_H4, shift);
D1HiPrice = iHigh(NULL, PERIOD_D1, shift);
D1LoPrice = iLow (NULL, PERIOD_D1, shift);
D1StartTime = iTime(NULL, PERIOD_D1, shift); D1LoPrice = iLow(NULL, PERIOD_D1, shift);
if(TimeDayOfWeek(StartTime) == 0/*Sunday*/)
{//Add fridays high and low
HiPrice = MathMax(HiPrice, iHigh(NULL,PERIOD_H4, shift+1))です。
LoPrice = MathMin(LoPrice, iLow(NULL,PERIOD_H4, shift+1)); D1HiPrice = MathMax(HiPrice, iHigh(NULL,PERIOD_H4, shift+1));
D1HiPrice = MathMax(D1HiPrice, iHigh(NULL, PERIOD_D1, shift+1)); D1LoPrice = MathMin(D1HiPrice, iHigh(NULL, PERIOD_D1, shift+1));
D1LoPrice = MathMin(D1LoPrice, iLow(NULL, PERIOD_D1, shift+1))です。
}
レンジ = HiPrice - LoPrice;
D1Range = D1HiPrice - D1LoPrice; D1Range = D1HiPrice - D1LoPrice;
DrawFibo()を実行。
return(0);
}
//+------------------------------+
この下にH4高値安値中値のオリジナルを添付します。
デルタストップをストップロスとして 使用しようとしています。
とトレーリングストップとして使用しようとしています。EAを添付します。
これを行うことは可能でしょうか?
//+------------------------------------------------------------------+
|| MODIFIED BY Avery T. Horton, Jr.別名 TheRumpledOne|||||||。
//
// Google検索 "therumpledone mt4"
//
//+------------------------------------------------------------------+
//| _Fibo_Hi_Low_Middle.mq4(フィボ ハイロー ミドル)。
//| Darkkillerによるspudfibo.Upgradeのベース
//: 修正に協力してくれた Mladen に感謝します。
//+------------------------------------------------------------------+
#property indicator_chart_window
extern int myChartPeriod = 0 ;
extern string note1 = "Higher,Middle,Lower colors";
extern color HigherColor = DeepSkyBlue;
extern color MiddleColor = Yellow;
extern color LowerColor = HotPink; extern color MiddleColor = Yellow; extern color LowColor = HotPink;
extern string note2 = "Draw middle?"。
extern bool HiLow = true;
extern bool Mid = true;
double HiPrice, LoPrice, Range;
datetime StartTime;
文字列 tChartPeriod, tHigher, tLower, tMiddle ;
int init()
{
if(myChartPeriod == 0) { myChartPeriod = Period() ; }.
tChartPeriod = TimeFrameToString(myChartPeriod) ;
tHigher = tChartPeriod + "H" ;
tLower = tChartPeriod + "L" ; tHigher = tChartPeriod + "H" ;
tMiddle = tChartPeriod + "M" ;
return(0);
}
int deinit()
{
ObjectDelete(tHigher);
ObjectDelete(tLower)を実行します。
ObjectDelete(tMiddle)。
return(0);
}
//+------------------------------------------------------------------+
//| フィボを描画する
//+------------------------------------------------------------------+
int DrawFibo()
{
if(HiLow)
{
if(ObjectFind(tHigher) == -1)
ObjectCreate(tHigher,OBJ_FIBO,0,StartTime,HiPrice+Range,StartTime,HiPrice);
さもなくば
{
ObjectSet(tHigher,OBJPROP_TIME2, StartTime);
ObjectSet(tHigher,OBJPROP_TIME1, StartTime);
ObjectSet(tHigher,OBJPROP_PRICE1,HiPrice+Range); ObjectSet(tHigher,OBJPROP_PRICE1,HiPrice+Range);
ObjectSet(tHigher,OBJPROP_PRICE2,HiPrice)とします。
}
ObjectSet(tHigher,OBJPROP_LEVELCOLOR,HigherColor)。
ObjectSet(tHigher,OBJPROP_FIBOLEVELS,1); } ObjectSet(tHigher,OBJPROP_FIBOLEVELS,1);
ObjectSet(tHigher,OBJPROP_FIRSTLEVEL+0,0.0); ObjectSet(tHigher,OBJPROP_FIRSTLEVEL+0,0.0)
ObjectSetFiboDescription(tHigher,0,tChartPeriod+" HIGHER- %$"); ObjectSetFiboDescription(tHigher,0,tChartPeriod+" HIGHER- %$");
ObjectSet(tHigher,OBJPROP_RAY,true)。
ObjectSet(tHigher,OBJPROP_BACK,true)。
ObjectSet(tHigher,OBJPROP_COLOR,EMPTY)。
if(ObjectFind(tLower) == -1)
ObjectCreate(tLower,OBJ_FIBO,0,StartTime,LoPrice-Range,StartTime,LoPrice);
さもなくば
{
ObjectSet(tLower,OBJPROP_TIME2, StartTime);
ObjectSet(tLower,OBJPROP_TIME1, StartTime);
ObjectSet(tLower,OBJPROP_PRICE1,LoPrice-Range); ObjectSet(tLower,OBJPROP_PRICE1,LoPrice-Range);
ObjectSet(tLower,OBJPROP_PRICE2,LoPrice); ObjectSet(tLower,OBJPROP_PRICE2,LoPrice);
}
ObjectSet(tLower,OBJPROP_LEVELCOLOR,LowerColor)を指定します。
ObjectSet(tLower,OBJPROP_FIBOLEVELS,1)を指定します。
ObjectSet(tLower,OBJPROP_FIRSTLEVEL+0,0.0);
ObjectSetFiboDescription(tLower,0,tChartPeriod+" LOWER - %$"); ObjectSetFiboDescription(tLower,0,tChartPeriod+" LOWER - %$");
ObjectSet(tLower,OBJPROP_RAY,true)。
ObjectSet(tLower,OBJPROP_BACK,true)。
ObjectSet(tLower,OBJPROP_COLOR,EMPTY)。
}
if(ミッド)
if(ObjectFind(tMiddle) == -1)
ObjectCreate(tMiddle,OBJ_FIBO,0,StartTime,HiPrice,StartTime+myChartPeriod*60,LoPrice);
さもなくば
{
ObjectSet(tMiddle,OBJPROP_TIME2, StartTime);
ObjectSet(tMiddle,OBJPROP_TIME1, StartTime+myChartPeriod*60); else { ObjectSet(tMiddle,OBJPROP_TIME1, StartTime+myChartPeriod*60);
ObjectSet(tMiddle,OBJPROP_PRICE1,HiPrice); ObjectSet(tMiddle,OBJPROP_PRICE1,HiPrice);
ObjectSet(tMiddle,OBJPROP_PRICE2,LoPrice)。
ObjectSet(tMiddle,OBJPROP_LEVELCOLOR,MiddleColor)。
ObjectSet(tMiddle,OBJPROP_FIBOLEVELS,1)を指定します。
ObjectSet(tMiddle,OBJPROP_FIRSTLEVEL+0,0.500)を実行します。
ObjectSetFiboDescription(tMiddle,0,tChartPeriod+" MIDDLE - %$"); ObjectSetFiboDescription(tMiddle,0,tChartPeriod+" %$");
ObjectSet(tMiddle,OBJPROP_RAY,true)。
ObjectSet(tMiddle,OBJPROP_BACK,true)。
ObjectSet(tMiddle,OBJPROP_COLOR,EMPTY)。
}
//+------------------------------------------------------------------+
//| インジケータ起動機能
//+------------------------------------------------------------------+
int start()
{
int shift = iBarShift(NULL,myChartPeriod,Time[0])+1;・・・?
HiPrice = iHigh(NULL,myChartPeriod,shift)。
LoPrice = iLow (NULL,myChartPeriod,shift)。
StartTime = iTime(NULL,myChartPeriod,shift)。
if(TimeDayOfWeek(StartTime)==0/*Sunday*/)
{//Add fridays high and low
HiPrice = MathMax(HiPrice,iHigh(NULL,myChartPeriod,shift+1));
LoPrice = MathMin(LoPrice,iLow(NULL,myChartPeriod,shift+1));
}
レンジ=HiPrice-LoPrice;
DrawFibo()を実行します。
// Comment( "Period_", tChartPeriod ) ;
return(0);
}
//+------------------------------------------------------------------+
文字列 TimeFrameToString(int tf)
{
文字列 tfs;
switch(tf) {
case PERIOD_M1: tfs="M1" ; break;
case PERIOD_M5: tfs="M5" ; break;
case PERIOD_M15: tfs="M15" ; break; case PERIOD_M30: tfs="M30" ; break;
case PERIOD_M30: tfs="M30" ; break; case PERIOD_H1: tfs="M1" ; break;
case PERIOD_H1: tfs="H1" ; break;
ケースPERIOD_H4: tfs="H4" ; break;
ケースPERIOD_D1: tfs="D1" ; break;
case PERIOD_W1: tfs="W1" ; break;
case PERIOD_MN1: tfs="MN "とする。
}
return(tfs);
}
という感じでやってみました。
P.S. なぜ私の添付ファイルは削除されてしまうのでしょうか?
MoveStopOnce
こんにちは、このMoveStopOnceコードを動作するようにしようとしているが、売り取引はコードによって変更されないようです、ちょうど買い。何か問題があるのでしょうか?
//Buys
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {
if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
[/code]
[code]
//Sells
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {
if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
MoveStopOnce
この問題が発生したことがあります。
追加する必要があると思います。
if (OrderType() == OP_BUY) を追加する必要があると思います。
そして、OP_SELLを売りのコードに使用します。
ビッグベー
私はこの問題がありました。
追加する必要があると思います。
if (OrderType() == OP_BUY) を追加する必要があります。
そして、売りコードにはOP_SELLを使用します。
ビッグベーOK、家に帰ったらやってみますが、それならなぜすでに買い注文でまだ動作するのでしょうか?
ありがとうございます。