如何编码? - 页 96 1...8990919293949596979899100101102103...347 新评论 David McCollum 2008.05.22 15:06 #951 wolfe 2008.05.22 19:44 #952 大家好。 这是一个愚蠢的编码问题,我知道我以前在哪里见过,但我需要帮助。 我正在编写一个自定义指标,我想让它只在一个新条的开始时读取当前买入价。 我不能只用Open[0],因为每次有新的tick出现,它就会一直返回当前柱状体的开放值。 我希望这个值只被返回一次,直到一个新的柱状体形成。 我知道我错过了一些很简单的东西,但我有一点困难。 谁能帮帮我? 谢谢。 -沃尔夫 omelette 2008.05.23 00:24 #953 wolfe: 大家好。这是一个愚蠢的编码问题,我知道我以前在哪里见过,但我需要帮助。 我正在编写一个自定义指标,我想让它只在一个新条的开始时读取当前的买入价。 我不能只用Open[0],因为每次有新的tick出现,它就会一直返回当前柱状体的开放值。 我希望这个值只被返回一次,直到一个新的柱状体形成。 我知道我错过了一些很简单的东西,但我有一点困难。 谁能帮帮我? 谢谢。 -wolfe 只需存储当前条形图的时间(Time[0])--当这个值发生变化时,你就有了一个新的条形图,所以得到你的价格,存储新的值并重复... wolfe 2008.05.23 00:54 #954 omelette: 只需存储当前的酒吧时间(Time[0])--当这个值发生变化时,你有一个新的酒吧,所以得到你的价格,存储新的价值并重复... 谢谢煎蛋。 我应该想到这一点的,对自己有点失望! 谢谢你的帮助! [删除] 2008.05.25 05:00 #955 谁能告诉我我在这段代码中做错了什么? 我想在其中添加更多的时间段,比如说时间段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高位低位中位的原始数据 附加的文件: 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 我想得到一些帮助,我正在尝试使用delta-stop作为止损 点 和追踪止损。附上的是EA。 是否可以这样做。 附加的文件: euroform_v_3.0.mq4 21 kb TheRumpledOne 2008.05.26 13:52 #957 //+------------------------------------------------------------------+ //| 修改者: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 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 我也遇到过这个问题。 我认为你需要添加。 如果(OrderType() == OP_BUY) 并在卖出代码中使用OP_SELL。 大贝 matrixebiz 2008.05.27 14:25 #960 Big Be: 我也遇到过这个问题。我认为你需要添加。 如果(OrderType() == OP_BUY) 并在卖出代码中使用OP_SELL。 大贝 好的,我回家后会试一试,但为什么它对买入订单仍然有效? 谢谢 1...8990919293949596979899100101102103...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
大家好。
这是一个愚蠢的编码问题,我知道我以前在哪里见过,但我需要帮助。
我正在编写一个自定义指标,我想让它只在一个新条的开始时读取当前买入价。 我不能只用Open[0],因为每次有新的tick出现,它就会一直返回当前柱状体的开放值。 我希望这个值只被返回一次,直到一个新的柱状体形成。
我知道我错过了一些很简单的东西,但我有一点困难。 谁能帮帮我?
谢谢。
-沃尔夫
大家好。
这是一个愚蠢的编码问题,我知道我以前在哪里见过,但我需要帮助。
我正在编写一个自定义指标,我想让它只在一个新条的开始时读取当前的买入价。 我不能只用Open[0],因为每次有新的tick出现,它就会一直返回当前柱状体的开放值。 我希望这个值只被返回一次,直到一个新的柱状体形成。
我知道我错过了一些很简单的东西,但我有一点困难。 谁能帮帮我?
谢谢。
-wolfe只需存储当前条形图的时间(Time[0])--当这个值发生变化时,你就有了一个新的条形图,所以得到你的价格,存储新的值并重复...
只需存储当前的酒吧时间(Time[0])--当这个值发生变化时,你有一个新的酒吧,所以得到你的价格,存储新的价值并重复...
谢谢煎蛋。
我应该想到这一点的,对自己有点失望!
谢谢你的帮助!![](https://c.mql5.com/forextsd/smiles/regular_smile.png)
谁能告诉我我在这段代码中做错了什么?
我想在其中添加更多的时间段,比如说时间段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. 为什么我的附件会被删除?
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。
大贝
我也遇到过这个问题。
我认为你需要添加。
如果(OrderType() == OP_BUY)
并在卖出代码中使用OP_SELL。
大贝好的,我回家后会试一试,但为什么它对买入订单仍然有效?
谢谢