并让我们把它做成一个 "卡通"(多货币)。 - 页 6 123456789101112 新评论 ALex 2009.07.22 13:26 #51 Swan >> : 错误130一直存在。 应检查StopLevel,用于StopLoss和Enter。 而且还 应该选择最高的那个? -130可能是因为试图设置一个挂单,而价格高于或低于)在代码中,有几行没有输入Marketlevel...这是对价格的未来跟踪,所以没有这个错误) -OrderOpenPrice的最低低点或最高点为止损)如果买入,0蜡烛和1蜡烛的最低H4低点...和卖出的最高价...一般来说,最低的低/高为停止 Aleksey Lebedev 2009.07.22 13:48 #52 ALex2008 >> : -130可能是因为试图设置一个挂单,而价格走高或走低)在代码中,有几行没有输入Marketlevel...这是未来的价格跟踪,所以没有这个错误)。 -OrderOpenPrice的最低低点或最高点作为止损)如果买入,选择0蜡烛和1蜡烛的H4最低点...和卖出的最高价...一般来说,停止的最低低/高点是 为了解决这个问题,现在去买入最高的低点,卖出最低的高点。 或如下 StopLoss=MathMin(b0,b1); StopLoss=MathMax(s0,s1); ALex 2009.07.22 14:06 #53 Swan >> : 没有任何纠正,现在选择最高的低点买入,最低的高点卖出。 从逻辑上讲是的,好的!)这是对停止的选择(它被选择为两个选项中最小的ppt。) 例子。 但你的版本更好,更简单...我会改正的,但要反过来)谢谢。 StopLoss=MathMax(b0,b1); StopLoss=MathMin(s0,s1); 纠正了第5页上的代码。 Aleksey Lebedev 2009.07.22 15:04 #54 ALex2008 >> : 从逻辑上讲是的,好的!)这是停止的选择(它被选择为两个选项中最小的ppt)。 塔基为买最小的) 我认为最好是最大的那个,并在第一条上拖网,不同的逻辑:) 停止级别(StopLevel)。 你可以改变输入 void UpTrend() { if(iOpen(NULL,PERIOD_H4,1) - iClose(NULL,PERIOD_H4,1) <= 0 && iOpen(NULL,PERIOD_H4,2) - iClose(NULL,PERIOD_H4,2) > 0) { DellAllOrders(); Enter=iHigh(NULL,PERIOD_H4,1)+(Ask-Bid)+10*Point; if( Enter-Ask< StopLevel) Enter=Ask+ StopLevel; OrderSend(Symbol(), OP_BUYSTOP, 0.1, Enter, 0, 0, Enter+ Profit, 0, 0,0, Green); } } 或打开一个订单 void UpTrend() { if(iOpen(NULL,PERIOD_H4,1) - iClose(NULL,PERIOD_H4,1) <= 0 && iOpen(NULL,PERIOD_H4,2) - iClose(NULL,PERIOD_H4,2) > 0) { DellAllOrders(); Enter=iHigh(NULL,PERIOD_H4,1)+(Ask-Bid)+10*Point; if( Enter-Ask< StopLevel) OrderSend(Symbol(), OP_BUY, 0.1, Ask, 0, 0, Ask+ Profit, 0, 0,0, Green); else OrderSend(Symbol(), OP_BUYSTOP, 0.1, Enter, 0, 0, Enter+ Profit, 0, 0,0, Green); } } 或想别的办法) Victor Nikolaev 2009.07.22 15:13 #55 Swan писал(а)>> 买最小的塔基) 我认为最好是在最高点买入,然后在第一根柱子上拖曳,不同的逻辑:) 有了StopLevel。 你可以改变输入 或打开一个订单 或者你可以想出别的办法)。 开盘价应通过StopLevel从Bid或Ask进一步确定。从开盘价开始,采取采取和停止的位置,也应该不接近停止水平。但对他们来说,我们可以通过利润或缩减来使用收盘块。 ALex 2009.07.22 15:31 #56 Swan >> : ......我认为最好是最大的和拖曳的第一条,不同的逻辑 :) 也是这样做的......但测试结果在目前这一站更好) ALex 2009.07.22 15:58 #57 纠正了停止播放的问题... //-------Поиск входа для установки ордеров, удаление старых ордеров и установка новых void UpTrend(){ if((iOpen(NULL,PERIOD_H4,1) - iClose(NULL,PERIOD_H4,1) <= 0) && (iOpen(NULL,PERIOD_H4,2) - iClose(NULL,PERIOD_H4,2) > 0)){ DellAllOrders(); Enter=iHigh(NULL,PERIOD_H4,1)+(Ask-Bid)+10*Point; if(Ask<= Enter- StopLevel){ RefreshRates(); OrderSend(Symbol(), OP_BUYSTOP, 0.1, Enter, 0, 0, Enter+ Profit, 0, 0,0, Green);} } } void DownTrend(){ if((iOpen(NULL,PERIOD_H4,1) - iClose(NULL,PERIOD_H4,1) >= 0) && (iOpen(NULL,PERIOD_H4,2) - iClose(NULL,PERIOD_H4,2) < 0)){ DellAllOrders(); Enter=iLow(NULL,PERIOD_H4,1)-10*Point; if(Bid>= Enter+ StopLevel){ RefreshRates(); OrderSend(Symbol(), OP_SELLSTOP, 0.1, Enter, 0, 0, Enter- Profit, 0, 0,0, Green);} } } //-------Вычисление стопа и утановка void SetStop(){ RefreshRates(); b0=iLow(NULL,PERIOD_H4,0)-10*Point; b1=iLow(NULL,PERIOD_H4,1)-10*Point; s0=iHigh(NULL,PERIOD_H4,0)+(Ask-Bid)+10*Point; s1=iHigh(NULL,PERIOD_H4,1)+(Ask-Bid)+10*Point; if( Type==0){ StopLoss=MathMax( b0, b1);//Функция возвращает максимальное из двух числовых значений if(Bid- StopLoss< StopLevel) StopLoss=MathMin( b0, b1); else OrderModify(OrderTicket(),OrderOpenPrice(), StopLoss,OrderTakeProfit(),0,Red); } if( Type==1){ StopLoss=MathMin( s0, s1);//Функция возвращает минимальное из двух числовых значений if( StopLoss-Ask< StopLevel) StopLoss=MathMax( s0, s1); else OrderModify(OrderTicket(),OrderOpenPrice(), StopLoss,OrderTakeProfit(),0,Red); } } Swan >> : ...或直接开出订单。 (用挂单进场要安全得多)否则,你的经纪公司或nofarms会把你开得很远...) >>调整了代码。 Aleksey Lebedev 2009.07.22 17:19 #58 ALex2008 >> : 纠正了止步不前的... (最好使用挂单)否则,DC会显示一些东西,或者nofarms会让你开得很远...) >>修复了代码。 修复旧的错误,增加新的错误 :D 把它也修好了) //+------------------------------------------------------------------+ //| CandyLite.mq4 | //| Ш.Александр.В | //| shestovav@gmail.com | //+------------------------------------------------------------------+ #property copyright "Ш.Александр.В" #property link "shestovav@gmail.com" #include <stdlib.mqh> extern double Profit = 3000; int Type, Ticket; double Stop, StopLevel, b0, b1, s0, s1, StopLoss, Enter; bool dwn, up, mod; int init(){ Profit*=Point; return(0); } int deinit() { return(0); } int start() { StopLevel=Point*MarketInfo(Symbol(),MODE_STOPLEVEL); // вычисление стоплевел //Point* if(! WorkOrders()){ UpTrend(); DownTrend(); } if( WorkOrders()){ if (( Type<=1)&& ( Stop==0)) SetStop(); if (( Type==1)||( Type==5)) UpTrend(); if (( Type==0)||( Type==4)) DownTrend(); } return(0); } //-------Поиск входа для установки ордеров, удаление старых ордеров и установка новых void UpTrend(){ if((iOpen(NULL,PERIOD_H4,1) - iClose(NULL,PERIOD_H4,1) <= 0) && (iOpen(NULL,PERIOD_H4,2) - iClose(NULL,PERIOD_H4,2) > 0)){ DellAllOrders(); Enter=iHigh(NULL,PERIOD_H4,1)+(Ask-Bid)+10*Point; if(Ask< Enter- StopLevel+0.5*Point){ OrderSend(Symbol(), OP_BUYSTOP, 0.1, Enter, 0, 0, Enter+ Profit, 0, 0,0, Green);} } } void DownTrend(){ if((iOpen(NULL,PERIOD_H4,1) - iClose(NULL,PERIOD_H4,1) >= 0) && (iOpen(NULL,PERIOD_H4,2) - iClose(NULL,PERIOD_H4,2) < 0)){ DellAllOrders(); Enter=iLow(NULL,PERIOD_H4,1)-10*Point; if(Bid> Enter+ StopLevel-0.5*Point){ OrderSend(Symbol(), OP_SELLSTOP, 0.1, Enter, 0, 0, Enter- Profit, 0, 0,0, Green);} } } //-------Вычисление стопа и установка void SetStop(){ RefreshRates(); b0=iLow(NULL,PERIOD_H4,0)-10*Point; b1=iLow(NULL,PERIOD_H4,1)-10*Point; s0=iHigh(NULL,PERIOD_H4,0)+(Ask-Bid)+10*Point; s1=iHigh(NULL,PERIOD_H4,1)+(Ask-Bid)+10*Point; if( Type==0){ StopLoss=MathMax( b0, b1);//Функция возвращает максимальное из двух числовых значений if(Bid- StopLoss< StopLevel-0.5*Point) StopLoss=MathMin( b0, b1); if(Bid- StopLoss> StopLevel-0.5*Point)//можно попробовать убрать строку OrderModify(OrderTicket(),OrderOpenPrice(), StopLoss,OrderTakeProfit(),0,Red); } if( Type==1){ StopLoss=MathMin( s0, s1);//Функция возвращает минимальное из двух числовых значений if( StopLoss-Ask< StopLevel-0.5*Point) StopLoss=MathMax( s0, s1); if( StopLoss-Ask> StopLevel-0.5*Point)//можно попробовать убрать строку OrderModify(OrderTicket(),OrderOpenPrice(), StopLoss,OrderTakeProfit(),0,Red); } } //-------Удаление всех ордеров, открытых и отложенных void DellAllOrders(){ if( WorkOrders()){ if( Type<=1)OrderClose( Ticket,OrderLots(),OrderClosePrice(),10); else OrderDelete( Ticket);} } //-------Поиск ордеров bool WorkOrders(){ for (int i=OrdersTotal()-1; i>=0; i--){ if (!OrderSelect( i, SELECT_BY_POS)) continue; if (OrderSymbol()!=Symbol()) continue; Type = OrderType(); Ticket=OrderTicket(); Stop =OrderStopLoss(); return(true);} return(false); } ALex 2009.07.22 17:21 #59 Swan >> : 修复旧的错误,增加新的错误 :D 什么原因? 0.5*Point 而MarketInfo()返回的是double类型,为什么要将其转换为Point...? 这也是...两个条件。 if(Bid- StopLoss< StopLevel-0.5*Point) StopLoss=MathMin( b0, b1); if(Bid- StopLoss> StopLevel-0.5*Point)//можно попробовать убрать строку 我想这就是我注意到的全部。最好解释一下是为了什么而改变的),这样我就可以为将来记住它了。) Aleksey Lebedev 2009.07.22 18:09 #60 ALex2008 >> : 我不明白...) 而MarketInfo()返回的是double类型,为什么要将其转换为Point...? 这个也是... 0.5*Point是一个delta,你也可以把它转换成0.7 :) 见实数的比较。 在大多数情况下,没有它也可能正常工作)。 该错误是 MarketInfo(Symbol(),MODE_STOPLEVEL) 它返回一个以点为单位的值,乘以点。 它是 if(Bid- StopLoss< StopLevel) StopLoss=MathMin( b0, b1); else OrderModify(OrderTicket(),OrderOpenPrice(), StopLoss,OrderTakeProfit(),0,Red); 如果为真,StopLoss被分配一个新的值。 否则就修改订单。 没有错误,但我必须脱下十字架或穿上长裤) 123456789101112 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
错误130一直存在。
应检查StopLevel,用于StopLoss和Enter。
而且还
应该选择最高的那个?
-130可能是因为试图设置一个挂单,而价格高于或低于)在代码中,有几行没有输入Marketlevel...这是对价格的未来跟踪,所以没有这个错误)
-OrderOpenPrice的最低低点或最高点为止损)如果买入,0蜡烛和1蜡烛的最低H4低点...和卖出的最高价...一般来说,最低的低/高为停止
-130可能是因为试图设置一个挂单,而价格走高或走低)在代码中,有几行没有输入Marketlevel...这是未来的价格跟踪,所以没有这个错误)。
-OrderOpenPrice的最低低点或最高点作为止损)如果买入,选择0蜡烛和1蜡烛的H4最低点...和卖出的最高价...一般来说,停止的最低低/高点是
为了解决这个问题,现在去买入最高的低点,卖出最低的高点。
或如下
没有任何纠正,现在选择最高的低点买入,最低的高点卖出。
从逻辑上讲是的,好的!)这是对停止的选择(它被选择为两个选项中最小的ppt。)
例子。
但你的版本更好,更简单...我会改正的,但要反过来)谢谢。纠正了第5页上的代码。
从逻辑上讲是的,好的!)这是停止的选择(它被选择为两个选项中最小的ppt)。
塔基为买最小的)
我认为最好是最大的那个,并在第一条上拖网,不同的逻辑:)
停止级别(StopLevel)。
你可以改变输入
或打开一个订单
或想别的办法)
买最小的塔基)
我认为最好是在最高点买入,然后在第一根柱子上拖曳,不同的逻辑:)
有了StopLevel。
你可以改变输入
或打开一个订单
或者你可以想出别的办法)。
开盘价应通过StopLevel从Bid或Ask进一步确定。从开盘价开始,采取采取和停止的位置,也应该不接近停止水平。但对他们来说,我们可以通过利润或缩减来使用收盘块。
......我认为最好是最大的和拖曳的第一条,不同的逻辑 :)
也是这样做的......但测试结果在目前这一站更好)
纠正了停止播放的问题...
...或直接开出订单。
(用挂单进场要安全得多)否则,你的经纪公司或nofarms会把你开得很远...)
>>调整了代码。
纠正了止步不前的...
(最好使用挂单)否则,DC会显示一些东西,或者nofarms会让你开得很远...)
>>修复了代码。
修复旧的错误,增加新的错误 :D
把它也修好了)
修复旧的错误,增加新的错误 :D
什么原因?
而MarketInfo()返回的是double类型,为什么要将其转换为Point...?
这也是...两个条件。
我想这就是我注意到的全部。最好解释一下是为了什么而改变的),这样我就可以为将来记住它了。)
我不明白...)
而MarketInfo()返回的是double类型,为什么要将其转换为Point...?
这个也是...
0.5*Point是一个delta,你也可以把它转换成0.7 :)
见实数的比较。
在大多数情况下,没有它也可能正常工作)。
该错误是
它返回一个以点为单位的值,乘以点。
它是
如果为真,StopLoss被分配一个新的值。
否则就修改订单。
没有错误,但我必须脱下十字架或穿上长裤)