| / | Forum |
|
mkowal
2006.06.09 17:35
hi, I have a problem with an EA, which instead of opening just only one position, keeps opening positions with each tick.... After evaluation of the code, I suspect, that the only part which might cause the problem is Trailing Stop modification section, which looks like that: if(Selling==0 && SellStartCondition) { Selling=1; // if condition is met set the Selling Status = 1 ticket=OrderSend(Symbol(), OP_SELL,Lots,Bid,3,TrStop,Bid-100*Point,"Selling !!!", 54321,0,Green); ... return(0); } if(Selling==1 && Trailer(TSDparam,TrStop)>0) //Trailing Stop modification { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)==true) { OrderModify(OrderTicket(),OrderOpenPrice(),TrStop,OrderTakeProfit(),0,Green); } else Print("OrderSelect returned the error of ",GetLastError()); }if(Selling==1 && SellStopCondition) //we have been selling and now we want to stop it { Selling=0; // if condition is met set the Selling Status = 0 OrderClose(OrderTicket(),Lots,Bid,3,Violet);... return(0); }
|
|
Break Through The Strategy Tester Limit On Testing Hedge EA An idea of testing the hedge Expert Advisors using the strategy tester. |
|
RickD
2006.06.13 03:35
1. All the parameters required. In case you have no intention to change StopLoss
value for example, use OrderStopLoss() function.
2. The best of all would be using of OrderSelect function. |
|
mkowal
2006.06.13 13:54
Thanx Rick,
in the mean time I have made some experiments and well, it looks like it is the best solution to use all of the parameters. but there is another problem - this time with variable declaration: if I declare a variable before the start() function (right after the extern fuctions declaration) it can be seen from any function and it's value is not re-initialized each time the start function is called. But how about the static variable ? as I understand the manual, if I give it initial value within the start() function and than I change it's value, next time the start() is called the variable is not re-initialized and the last given value should be still assigned to it. But - somehow it doesn't work: in the above example, the Buying variable was declared as a static int in start() function. It was supposed to prevent the EA from opening more than 1 position at the same time (the Buying==1). but it sometimes kept the value, and sometimes lost it.... no idea why.... moving the variable declaration outside the start() function helped. should I declare all of the important variables in the section ? what the static variables are finally for ? best regards, CoVal |