[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 423

 
sergeev:

那么函数OrderLots。


我无法理解这个功能,请举例说明。)

它说 "该订单必须使用OrderSelect() 函数进行预选",我如何选择同一方向的所有未结订单?

 
Elektronik:


我不能理解这个功能,请用一个例子帮助我:)

它说 "该订单必须用OrderSelect() 预选",我如何选择同一方向的所有未结订单?

没有办法。只有在循环中用OrderSelect() 逐一进行。

 

你能告诉我是否有一个止损 脚本需要插入到这个EA中?

double x = ... // Задаем на сколько пипсов выше
double sl = NormalizeDouble(High[1] + x * Point, Digits); // Задаем значение стоплосс на x пипсов выше предпоследней свечи
附加的文件:
 

如何在不进行四舍五入的情况下减少小数点后 的数字?

(DoubleToStr(NormalizeDouble(0.109,2),2)); = 0.11和0.10

 
Elektronik:

如何在不进行四舍五入的情况下减少小数点后的数字?

(DoubleToStr(NormalizeDouble(0.109,2),2)); = 0.11和0.10

有无数种方法,例如,使用字符串函数来寻找一个点的位置,并截断超过该点的一个字符的字符串。但是,如果有现成的内置解决方案,我们为什么要无中生有地发明问题?只要把两个改为一个,就可以了。
 
Reshetov:
有无数种方法,例如使用字符串函数找到一个点的位置,并截断超过该点的字符串的一个字符。但如果有一个现成的、现成的解决方案,为什么还要编造问题呢?


请建议一个现成的解决方案:)

 
Elektronik:


请告诉我这是否是一个现成的解决方案:)

(DoubleToStr(NormalizeDouble(0.109,1))
 

如果不圆滑,就这一个:

Reshetov с помощью строковых функций найти местоположение точки и обрезать строку на один символ далее нее

 

请帮助我了解哪里出了问题。

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

//| AAAA.mq4 |

//| |

//| |

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

#财产版权""

#属性链接""


外部字符串 TimeStart = "00:00"; //控制期开始的时间。

extern string TimeEnd = "00:00"; //控制期结束的时间。


外置双数LOT = 0.01; // lot

外置 int Magic = 777; // magic



double marga,Lot,SL,TP; // entered margin,lot, stop loss and take profit variables

int Total,Orders,tipOrders,TradeDey; // 变量类型,订单类型,交易日。


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

//|专家顾问的功能

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

int start() // 初始化的函数 start

{

datetime Time_Start = StrToTime(StringConcatenate(Day(),".",Month(),".",Year(),"",TimeStart, ":00"); // Start parameters //

datetime Time_End = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeEnd, ":00"); // 结束参数//



总数=0; // 如果没有订单

for(int i=1; i<=OrdersTotal(); i++) // 订单循环

{

如果(OrderSelect(i-1,SELECT_BY_POS)==false) // 如果没有市场订单

{

如果//如果。

{

int BarStart = iBarShift(NULL,PERIOD_M1,Time_Start,false); // 在M1的检查周期开始时搜索条形。

int BarEnd = iBarShift(NULL,PERIOD_M1,Time_End,false); //在m1处搜索检查期的条形结束。

double Max_Price=iHigh(NULL,0,iHighest(NULL,PERIOD_M1,MODE_HIGH,BarStart-BarEnd,BarEnd)); //周期内最高价格值。

double Min_Price=iLow (NULL,0,iLowest (NULL,PERIOD_M1,MODE_LOW,BarStart-BarEnd,BarEnd)); //周期内最低价格值。

}

如果(TimeCurrent()>Time_End &&ObjectFind("bar0"+Time_End)==-) //图形显示设置

{

ObjectCreate("bar0"+Time_End, OBJ_RECTANGLE, 0, 0,0, 0,0)。

ObjectSet("bar0"+Time_End, OBJPROP_STYLE, STYLE_SOLID)。

ObjectSet("bar0"+Time_End, OBJPROP_COLOR, Blue)。

ObjectSet("bar0"+Time_End, OBJPROP_BACK, true)。

ObjectSet("bar0"+Time_End, OBJPROP_TIME1,Time_Start)。

ObjectSet("bar0"+Time_End, OBJPROP_PRICE1,Max_Price)。

ObjectSet("bar0"+Time_End, OBJPROP_TIME2,Time_End)。

ObjectSet("bar0"+Time_End, OBJPROP_PRICE2,Min_Price)。

}

如果(Bid<Max_Price) OrderSend(Symbol(),OP_BUYSTOP,LOT,Ask,3,Min_Price, //下BUY挂单的条件

NormalizeDouble(Ask + Max_Price - Min_Price,Digits), "UPDD",Magic,Blue)。

如果(Bid>Max_Price)

Comment("Pending order cannot be placed on Bid")。

如果(Bid>Min_Price) OrderSend(Symbol(),OP_SELLSTOP,LOT,Bid,3,Min_Price, //下卖出挂单的条件。

NormalizeDouble(Ask + Max_Pric-Min_Price,Digits), "UPDD",Magic,Blue)。

如果(Bid<Max_Price)

Comment("挂单不能放在SELL上")。

}

返回。

}

不能编译。否则它应该从范围内上下放置两个挂单。

 
Legeo777:

请帮助我了解哪里出了问题。

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

//| AAAA.mq4 |

//| |

//| |

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

#财产版权""

#属性链接""


外部字符串 TimeStart = "00:00"; //控制期开始的时间。

extern string TimeEnd = "00:00"; //控制期结束的时间。


外置双数LOT = 0.01; // lot

外置 int Magic = 777; // magic



double marga,Lot,SL,TP; // entered margin,lot, stop loss and take profit variables

int Total,Orders,tipOrders,TradeDey; // 变量类型,订单类型,交易日。


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

//|专家顾问的功能

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

int start() // 初始化的函数 start

{

datetime Time_Start = StrToTime(StringConcatenate(Day(),".",Month(),".",Year(),"",TimeStart, ":00"); // Start parameters //

datetime Time_End = StrToTime(StringConcatenate(Day(),".",Month(),".",Year(),",TimeEnd, ":00"); // End parameters//



总数=0; // 如果没有订单

for(int i=1; i<=OrdersTotal(); i++) // 订单循环

{

如果(OrderSelect(i-1,SELECT_BY_POS)==false) // 如果没有市场订单

{

如果 //如果: -删除
{

int BarStart = iBarShift(NULL,PERIOD_M1,Time_Start,false); // 在M1的检查周期开始时搜索条形。

int BarEnd = iBarShift(NULL,PERIOD_M1,Time_End,false); //在m1处搜索检查期的条形结束。

double Max_Price=iHigh(NULL,0,iHighest(NULL,PERIOD_M1,MODE_HIGH,BarStart-BarEnd,BarEnd)); //周期内最高价格值。

double Min_Price=iLow (NULL,0,iLowest (NULL,PERIOD_M1,MODE_LOW,BarStart-BarEnd,BarEnd)); //周期内最低价格值。

}

如果(TimeCurrent()>Time_End &&ObjectFind("bar0"+Time_End)==-) //图形显示设置

{

ObjectCreate("bar0"+Time_End, OBJ_RECTANGLE, 0, 0,0, 0,0)。

ObjectSet("bar0"+Time_End, OBJPROP_STYLE, STYLE_SOLID)。

ObjectSet("bar0"+Time_End, OBJPROP_COLOR, Blue)。

ObjectSet("bar0"+Time_End, OBJPROP_BACK, true)。

ObjectSet("bar0"+Time_End, OBJPROP_TIME1,Time_Start)。

ObjectSet("bar0"+Time_End, OBJPROP_PRICE1,Max_Price)。

ObjectSet("bar0"+Time_End, OBJPROP_TIME2,Time_End)。

ObjectSet("bar0"+Time_End, OBJPROP_PRICE2,Min_Price)。

}

如果(Bid<Max_Price) OrderSend(Symbol(),OP_BUYSTOP,LOT,Ask,3,Min_Price, //放置BUY挂单的条件 -挂单不能由Ask或Bid放置

NormalizeDouble(Ask + Max_Price - Min_Price,Digits), "UPDD",Magic,Blue)。

如果(Bid>Max_Price)

Comment("Pending order cannot be placed on Bid")。

如果(Bid>Min_Price) OrderSend(Symbol(),OP_SELLSTOP,LOT,Bid,3,Min_Price, //下卖出挂单的条件 -相同

NormalizeDouble(Ask + Max_Pric-Min_Price,Digits), "UPDD",Magic,Blue)。

如果(Bid<Max_Price)--这里肯定有一个错误

Comment("挂单不能放在SELL上")。

}

} - 添加

返回。

}

我不能编译它。 实际上,它应该从范围内上下放置两个挂单。

修复后,应该可以编译,但可能无法工作--错误的时间设置,非正常化的价格,没有检查止损与开盘价 的接近程度。