コーディングの方法は? - ページ 96

 
 

みなさん、こんにちは。

これは愚かなコーディングの質問で、以前どこかで見たことがあると思いますが、助けが必要です。

私はカスタムインジケータを コーディングしていますが、私がしたいのは、新しいバーの始まりだけで、現在の買値を読み取ることなのです。 新しいティックが入るたびに現在のバーのオープン値が返され続けるので、Open[0]を使うわけにはいきません。 新しいバーが形成されるまで、一度だけ値を返したいのです。

私はここで非常に単純な何かを見逃していることを知っているが、それを理解するのに少し苦労しています。 どなたか助けていただけませんか?

ありがとうございます。

-wolfe

 
wolfe:
皆さん、こんにちは。

これは愚かなコーディングの質問で、前にどこかで見たことがあると思いますが、助けが必要です。

カスタムインジケーターをコーディングしているのですが、新しいバーの開始時に現在の買値を読み取るようにしたいだけなのです。 新しいティックが入るたびに現在のバーのオープン値が返され続けるので、Open[0]を使うわけにはいきません。 新しいバーが形成されるまで、一度だけ値を返したいのです。

私はここで非常に単純な何かを見逃していることを知っているが、それを理解するのに少し苦労しています。 どなたか助けていただけませんか?

ありがとうございます。

-ウォルフ

現在のバーの時間(Time[0])を保存します。この値が変わると新しいバーができるので、価格を取得し、新しい値を保存し、それを繰り返します...

 
omelette:
現在のバーの時間(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. なぜ私の添付ファイルは削除されてしまうのでしょうか?

ファイル:
highlower.gif  14 kb
 

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を売りのコードに使用します。

ビッグベー

 
Big Be:
私はこの問題がありました。

追加する必要があると思います。

if (OrderType() == OP_BUY) を追加する必要があります。

そして、売りコードにはOP_SELLを使用します。

ビッグベー

OK、家に帰ったらやってみますが、それならなぜすでに買い注文でまだ動作するのでしょうか?

ありがとうございます。