Erst mal nicht, Danke.
Im Anhang sozusagen die Version 2.0. Hab versucht, Alles kompakter und eindeutiger zu schreiben. Bloß noch ein bool drin, der im Durchlauf nicht verändert wird. Mit bools hab ich so meine Geschichten erlebt.
Nicht mehr void OnTick. Wenn der gesamte Code bei jedem Tick gestartet wird, dann weiß ich nicht, ob er so optimal läuft...
Es wird immer gewarnt, weil ausser bei Start / return(NULL) keine return Werte zurück geliefert, bzw. erst gar keine deklariert werden. Sind doch aber eigentlich unnötig oder nicht?
Hoffe mal, das ist nicht zu viel Zeugs im OrderSend Bereich...
Code:
//=============================================================================================================
// O P E N O R D E R S
//=============================================================================================================
if(Hour()>=Open_From_Hour&&Minute()>=Open_From_Min&&Hour()<=Open_Till_Hour&&Minute()<=Open_Till_Min){
if( open_Buy==true ){
for(int i=OrdersTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS))
if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol())Print( "buy" , i );
else if(IsTradeAllowed())OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,Slippage,Buy_SL,Buy_TP,NULL,Buy_MN,NULL,Blue);
if(IsTradeContextBusy())Sleep(Sl_MS);}
if( open_Sell==true ){
for(int j=OrdersTotal()-1;j>=0;j--)
if(OrderSelect(j,SELECT_BY_POS))
if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol())Print( "sell" , i );
else if(IsTradeAllowed())OrderSend(Symbol(),OP_SELL,LotsSel,Bid,Slippage,Sel_SL,Sel_TP,NULL,Sell_MN,NULL,Blue);
if(IsTradeContextBusy())Sleep(Sl_MS);}
}
Und auch nicht im OrderClose Bereich...
Code:
//=============================================================================================================
// C L O S E O R D E R S
//=============================================================================================================
for(int k=OrdersTotal()-1;k>=0;k--){
if(OrderSelect(k,SELECT_BY_POS)){
if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol()){
if( ( CLbuy_D > OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min) ){
if(IsTradeAllowed())OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Red);
if(IsTradeContextBusy())Sleep(Sl_MS);
LotsBuy = OrderLots() + LotsPlus;
} } } }
for(int l=OrdersTotal()-1;l>=0;l--){
if(OrderSelect(l,SELECT_BY_POS)){
if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()){
if( ( CLsel_D < OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min) ){
if(IsTradeAllowed())OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
if(IsTradeContextBusy())Sleep(Sl_MS);
LotsSel = OrderLots() + LotsPlus;
} } } }