如何编码? - 页 96

 
 

大家好。

这是一个愚蠢的编码问题,我知道我以前在哪里见过,但我需要帮助。

我正在编写一个自定义指标,我想让它只在一个新条的开始时读取当前买入价。 我不能只用Open[0],因为每次有新的tick出现,它就会一直返回当前柱状体的开放值。 我希望这个值只被返回一次,直到一个新的柱状体形成。

我知道我错过了一些很简单的东西,但我有一点困难。 谁能帮帮我?

谢谢。

-沃尔夫

 
wolfe:
大家好。

这是一个愚蠢的编码问题,我知道我以前在哪里见过,但我需要帮助。

我正在编写一个自定义指标,我想让它只在一个新条的开始时读取当前的买入价。 我不能只用Open[0],因为每次有新的tick出现,它就会一直返回当前柱状体的开放值。 我希望这个值只被返回一次,直到一个新的柱状体形成。

我知道我错过了一些很简单的东西,但我有一点困难。 谁能帮帮我?

谢谢。

-wolfe

只需存储当前条形图的时间(Time[0])--当这个值发生变化时,你就有了一个新的条形图,所以得到你的价格,存储新的值并重复...

 
omelette:
只需存储当前的酒吧时间(Time[0])--当这个值发生变化时,你有一个新的酒吧,所以得到你的价格,存储新的价值并重复...

谢谢煎蛋。

我应该想到这一点的,对自己有点失望!

谢谢你的帮助!

 

谁能告诉我我在这段代码中做错了什么?

我想在其中添加更多的时间段,比如说时间段Daily,但我不知道哪里出了问题。

//+---------------------------------------------------------+

//| #MTF_Hi_Low_Middle.mq4

//| 基地来自spudfibo.Upgrade by Darkkiller

//: 感谢Mladen帮助我做了一些修正。

//+------------------------------------------------------------------+

#属性 indicator_chart_window

Extern string note1 = "H4 Higher,Middle,Lower colors";

外部颜色 H4HigherColor = DeepSkyBlue;

外部颜色 H4MiddleColor = 黄色。

外置颜色 H4LowerColor = HotPink;

外部字符串 note2 = "Draw H4 Higher, Lower and Middle?";

外部 bool H4HiLow = true;

extern bool H4Mid = true;

extern string note3 = "D1 Higher,Middle,Lower colors";

外部颜色 D1HigherColor = DeepSkyBlue;

外置颜色 D1MiddleColor = Yellow;

外置颜色D1LowerColor = HotPink。

extern string note4 = "Draw D1 Higher, Lower and Middle?";

外部 bool D1HiLow = true;

外置 bool D1Mid = true;

double HiPrice, LoPrice, Range, D1HiPrice, D1LoPrice, D1Range;

datetime StartTime。

int init()

{

返回(0)。

}

int deinit()

{

ObjectDelete("H4Higher");

ObjectDelete("H4Lower");

ObjectDelete("H4Middle");

ObjectDelete("D1Higher");

ObjectDelete("D1Lower");

ObjectDelete("D1Middle");

return(0);

}

//+------------------------------------------------------------------+

//| 绘制飞博

//+------------------------------------------------------------------+

int DrawFibo()

{

///////////////////////////////////////////HILO/////

如果(H4HiLow)

{

如果(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_PRICE2,HiPrice);

}

ObjectSet("H4Higher", OBJPROP_LEVELCOLOR, H4HigherColor);

ObjectSet("H4Higher", OBJPROP_FIBOLEVELS,1);

ObjectSet("H4Higher", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("H4Higher", 0, "H4 HIGHER- %$");

ObjectSet("H4Higher", OBJPROP_RAY,true);

ObjectSet("H4Higher", OBJPROP_BACK,true);

ObjectSet("H4Higher", OBJPROP_COLOR,EMPTY)。

如果(ObjectFind("H4Lower") == -1)

ObjectCreate("H4Lower", OBJ_FIBO, 0, StartTime, LoPrice-Range, StartTime, LoPrice);

否则

{

ObjectSet("H4Lower", OBJPROP_TIME2, StartTime);

ObjectSet("H4Lower", OBJPROP_TIME1, StartTime);

ObjectSet("H4Lower", OBJPROP_PRICE1,LoPice-Range);

ObjectSet("H4Lower", OBJPROP_PRICE2,LoPrice);

}

ObjectSet("H4Lower", OBJPROP_LEVELCOLOR, H4LowerColor);

ObjectSet("H4Lower", OBJPROP_FIBOLEVELS, 1);

ObjectSet("H4Lower", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("H4Lower", 0, "H4 LOWER - %$");

ObjectSet("H4Lower", OBJPROP_RAY, true);

ObjectSet("H4Lower", OBJPROP_BACK, true);

ObjectSet("H4Lower", OBJPROP_COLOR, EMPTY);

}

如果(D1HiLow)

{

如果(ObjectFind("D1Higher") == -1)

ObjectCreate("D1Higher", OBJ_FIBO, 0, D1StartTime, D1HiPrice+D1Range, D1StartTime, D1HiPrice) 。

否则

{

ObjectSet("D1Higher", OBJPROP_TIME2, D1StartTime);

ObjectSet("D1Higher", OBJPROP_TIME1, D1StartTime);

ObjectSet("D1Higher", OBJPROP_PRICE1, D1HiPrice+D1Range);

ObjectSet("D1Higher", OBJPROP_PRICE2, D1HiPrice);

}

ObjectSet("D1Higher", OBJPROP_LEVELCOLOR, D1HigherColor);

ObjectSet("D1Higher", OBJPROP_FIBOLEVELS,1);

ObjectSet("D1Higher", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("D1Higher", 0, "H4 HIGHER- %$");

ObjectSet("D1Higher", OBJPROP_RAY, true);

ObjectSet("D1Higher", OBJPROP_BACK, true);

ObjectSet("D1Higher", OBJPROP_COLOR, EMPTY);

如果(ObjectFind("D1Lower") == -1)

ObjectCreate("D1Lower", OBJ_FIBO, 0, D1StartTime, D1LoPric-D1Range, D1StartTime, 1LoPrice)。

否则

{

ObjectSet("D1Lower", OBJPROP_TIME2, D1StartTime);

ObjectSet("D1Lower", OBJPROP_TIME1, D1StartTime);

ObjectSet("D1Lower", OBJPROP_PRICE1, D1LoPice-D1Range);

ObjectSet("D1Lower", OBJPROP_PRICE2, D1LoPrice);

}

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_BACK, true);

ObjectSet("D1Lower", OBJPROP_COLOR, EMPTY);

}

/////////////////////////////////////////HILO////////

/////////////////////////////////////////MIDDLE////

如果(H4Mid)

如果(ObjectFind("H4Middle") == -1)

ObjectCreate("H4Middle", OBJ_FIBO, 0, StartTime, HiPrice, StartTime+PERIOD_H4*60, LoPrice) 。

否则

{

ObjectSet("H4Middle", OBJPROP_TIME2, StartTime);

ObjectSet("H4Middle", OBJPROP_TIME1, StartTime+PERIOD_H4*60);

ObjectSet("H4Middle", OBJPROP_PRICE1, HiPrice);

ObjectSet("H4Middle", OBJPROP_PRICE2, LoPrice);

}

ObjectSet("H4Middle", OBJPROP_LEVELCOLOR, H4MiddleColor);

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_COLOR, EMPTY);

}

如果(D1Mid)

如果(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);

ObjectSet("D1Middle", OBJPROP_PRICE1, D1HiPrice);

ObjectSet("D1Middle", OBJPROP_PRICE2, D1LoPrice);

}

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", OBJPROP_BACK, true);

ObjectSet("D1Middle", OBJPROP_COLOR, EMPTY);

}

/////////////////////////////////////////MIDDLE////

//+-----------------------------------------------+

//| 指示器启动功能

//+-----------------------------------------------+

int start()

{

int shift = iBarShift(NULL, PERIOD_D1, Time[0]) + 1; // H4

HiPrice = iHigh(NULL, PERIOD_H4, shift);

LoPrice = iLow (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);

如果(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(D1HiPrice, iHigh(NULL, PERIOD_D1, shift+1))。

D1LoPrice = MathMin(D1LoPrice, iLow(NULL, PERIOD_D1, shift+1))。

}

Range = HiPrice - LoPrice。

D1Range = D1HiPrice - D1LoPrice;

DrawFibo()。

return(0);

}

//+------------------------------+

下面我附上H4高位低位中位的原始数据

 

我想得到一些帮助,我正在尝试使用delta-stop作为止损

和追踪止损。附上的是EA。

是否可以这样做。

附加的文件:
 

//+------------------------------------------------------------------+

//| 修改者:Avery T. Horton, Jr.(又名TheRumpledOne)。

//| |

//| |

//|

//

// 谷歌搜索 "therumpledone mt4"

//

//+------------------------------------------------------------------+

//| _Fibo_Hi_Low_Middle.mq4

//| 基地来自Darkkiller的spudfibo.Upgrade

//: 感谢Mladen帮助我做了一些修正。

//+------------------------------------------------------------------+

#property indicator_chart_window

外部int myChartPeriod = 0 ;

extern string note1 = "Higher,Middle,Lower colors";

外部颜色 HigherColor = DeepSkyBlue;

外部颜色 MiddleColor = Yellow;

外部颜色 LowerColor = HotPink。

外部字符串 note2 = "Draw middle?" 。

extern bool HiLow = true;

外部 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" 。

tMiddle = tChartPeriod + "M" 。

返回(0)。

}

int deinit()

{

ObjectDelete(tHigher);

ObjectDelete(tLower);

ObjectDelete(tMiddle);

返回(0)。

}

//+------------------------------------------------------------------+

//| 绘制Fibo

//+------------------------------------------------------------------+

int DrawFibo()

{

如果(HiLow)

{

如果(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_PRICE2,HiPrice)。

}

ObjectSet(tHigher,OBJPROP_LEVELCOLOR,HigherColor)。

ObjectSet(tHigher,OBJPROP_FIBOLEVELS,1);

ObjectSet(tHigher,OBJPROP_FIRSTLEVEL+0,0.0)。

ObjectSetFiboDescription(tHigher,0,tChartPeriod+" HIGHER- %$")。

ObjectSet(tHigher,OBJPROP_RAY,true);

ObjectSet(tHigher,OBJPROP_BACK,true);

ObjectSet(tHigher,OBJPROP_COLOR,EMPTY)。

如果(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,LoPice-Range);

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 - %$")。

ObjectSet(tLower,OBJPROP_RAY,true);

ObjectSet(tLower,OBJPROP_BACK,true);

ObjectSet(tLower,OBJPROP_COLOR,EMPTY);

}

/////////////////////////////////////////MIDDLE///////////////////////////

如果(Mid)

如果(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);

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 - %$")。

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);

如果(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))。

}

Range = HiPric-LoPrice;

DrawFibo();

// Comment( "Period_", tChartPeriod ) ;

return(0);

}

//+------------------------------------------------------------------+

string TimeFrameToString(int tf)

{

string 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_H1: tfs="H1" ; break;

case PERIOD_H4: tfs="H4" ; break;

case 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

我也遇到过这个问题。

我认为你需要添加。

如果(OrderType() == OP_BUY)

并在卖出代码中使用OP_SELL。

大贝

 
Big Be:
我也遇到过这个问题。

我认为你需要添加。

如果(OrderType() == OP_BUY)

并在卖出代码中使用OP_SELL。

大贝

好的,我回家后会试一试,但为什么它对买入订单仍然有效?

谢谢