Termos de Referência
Hi, I need an EA based on the following thinkscript program. The program is simple and self explanatory. Let me know if there are any questions. I will need the actual script of the program so that I can modify it.
Thank you.
Input RVIlength =2;
Input Investment = 1000;
input No_Share_To-Buy = Investment /close;
def highPrice = StDev(high, 2);
//the following is a simple moving average//
def AVGRVI = (MovingAverage(data = RVI, length =RVIlength));
def AvgRVI_V = if AVGRVI[-1]-AVGRVI>0 and AVGRVI-AVGRVI[1]<0 then 1 else 0;
def AvgRVI_H = if AVGRVI[-1]-AVGRVI<0 and AVGRVI-AVGRVI[1]>0 then 1 else 0;
def AVGRVI_Slope_Up = if AVGRVI-AVGRVI[1] >0 then 1 else 0;
def AVGRVI_Slope_down = if AVGRVI-AVGRVI[1] >0 then 1 else 0;
///////////////////////////////////////////////////////////////////////////////////////////////////////
//And here are the Buy to Open (BTO), Sell to Close (STC) and STO and BTC sell signals:
def BTO = if AvgRvi_Valley==1 and AVGRVI_Slope_Up==1 then 1 else 0;
def STC = if AvgRvi_hill==1 then 1 else 0;
def STO = if AvgRvi_hill[1]==1 and AVGRVI_Slope_Down==1 then 1 else 0;
def BTC = if AvgRvi_Valley[-1]==1 then 1 else 0;
//Please note that every STO is exactly one tick after the STC and every BTO is exactly one tick following the BTC (ie, the entire pairs chart is divided into buy or sell with no gaps in between unless the sale is going in the wrong direction within 3 ticks of the purchase. In other words, if the BTO doesn't generate a profit of any amount within the first three ticks, I'd take the loss in that trade and close the position. Same thing for STO positions. That too needs to lead to a positive P&L within the first three ticks (I don't care if after the third tick it doesn't generate a positive P&L-as a matter of fact, I would like the program to disregard the P&L past the first three ticks and not to close the position). The way I programmed that in Thinkscript is to assign a Timer to keep track of the P&L within only the first three ticks of any new BTO or STO signals. IN MQL there may be easier ways to accomplish this than in thinkscript, but the following is my explanation of my workaround this issue which may help.
//The following will keep track of how many ticks has passed since the position was first opened regardless of how many more open signals are generated between that time and the time this trade position is closed
Def BTO/STO_Timer = if (BTO ==1 or STO==1) then BTO/STO_Timer[1]+1 else if (STC ==1 or BTC==1) then 0 else BTO/STO_Timer[1]+1
//the following will remember the opening price of each position regardless of how many more Open signals are generated between that time and the time this trade position is closed
Def BTO/STO_Price = if (BTO == 1 or STO ==1) then Close else if (STC == 1 or BTC==1) then 0 else BTO/STO_Price[1];
//the following will generate the close signals if the P&L within the first three ticks of the new position is not going in the right direction.
def StopLoss_STC = if BTO_Price > close and BTO[3]==1 and BTO/STO_Timer[3]<3 then 1 else 0;
def StopLoss_BTC = if STO_Price < close and STO[3] ==1 and BTO_Timer[3]<2 then 1 else 0;
/////////////////////////////////////////////////////////////////////////////////////////////////////
//Lastly I need to Generate the BTO and STO... signals to auto_purchase the number of units as calculated in "No_Share_To-Buy" with the signal above,
//I need to generate STC signal which closes the position with either STC or StopLoss_STC
// and to generate BTC signal which closes the position with either BTC or StopLoss_BTC
BTW, I don't care if the program is in MQL4 or MQL5. Whichever is more convenient.
Thank You,
David