here is an example:
/*[[
Name := StochRSI X
Author := Copyright © 2002, MetaQuotes Software Corp.
Link := http://www.metaquotes.ru
Notes :=
Lots := 1
Stop Loss := 0
Take Profit := 25
Trailing Stop := 15
]]*/
defines: rsiperiod(14);
defines: KPeriod(8),Dperiod(3),Slowing(3);
var: RSICurrent(0),RSIPrevious(0),StochCurrent(0),StochPrevious(0);
var: cnt(0);
If Bars<200 or TakeProfit<10 then Exit; // less than 200 bars on the chart
RSICurrent =iRSI(rsiperiod,0);
RSIPrevious =iRSI(rsiperiod,1);
StochCurrent =iSto(Kperiod,Dperiod,Slowing,MODE_LWMA,MODE_MAIN,0);
StochPrevious=iSto(Kperiod,Dperiod,Slowing,MODE_LWMA,MODE_MAIN,1);
If TotalTrades<1 then
{
If FreeMargin<1000 then Exit; // no money - we exit
// checking for the possibility of taking a long position (BUY)
If StochCurrent>50 and StochPrevious<50 and RSICurrent>50 and
RSIPrevious<50 then
{
SetOrder(OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,RED); // executing
Alert("Buy ",Symbol());
Exit; // exiting, since after the execution of a trade
// there is a 10-second trading timeout
};
// checking for the possibility of taking a short position (SELL)
If StochCurrent>50 and StochPrevious<50 and RSICurrent>50 and // checking for the possibility of taking a short position (SELL)
RSIPrevious<50 then
{
SetOrder(OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,RED); // executing
Alert("Sell ",Symbol());
Exit; // exiting
};
Exit;
};
for cnt=1 to TotalTrades
{
if OrderValue(cnt,VAL_TYPE)<=OP_SELL and // is this an open position? OP_BUY or OP_SELL
OrderValue(cnt,VAL_SYMBOL)=Symbol then // does the instrument match?
{
If OrderValue(cnt,VAL_TYPE)=OP_BUY then // long position opened
{
// we check - maybe, it's already time to close it?
If StochCurrent<75 and StochPrevious>75 then
{
CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Bid,3,Violet);
Exit; // exiting
};
// we check - maybe, we already may or it's already time to set a trailing stop?
If TrailingStop>0 then // the user has put a trailing stop in his settings
{ // so, we set out to check it
If(Bid-OrderValue(cnt,VAL_OPENPRICE))>(Point*TrailingStop) then
{
If OrderValue(cnt,VAL_STOPLOSS)<(Bid-Point*TrailingStop) then
{
ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),
Bid-Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROFIT),Red);
Exit;
};
};
};
}
else // otherwise it is a short position
{
// we check - maybe, it's already time to close it?
If StochCurrent>25 and StochPrevious<25 then
{
CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Ask,3,Violet);
Exit; // exiting
};
// we check - maybe, we already may or it's already time to set a trailing stop?
If TrailingStop>0 then // the user has put a trailing stop in his settings
{
// so, we set out to check it
If(OrderValue(cnt,VAL_OPENPRICE)-Ask)>(Point*TrailingStop) then
{
If OrderValue(cnt,VAL_STOPLOSS)=0 or
OrderValue(cnt,VAL_STOPLOSS)>(Ask+Point*TrailingStop) then
{
ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),
Ask+Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROFIT),Red);
Exit;
};
};
};
};
};
};
// the end.
Ok tahnk you but what I do not understand is where these codes will go in my script???
/*[[
Name := Turbo Trader
Author := Mike Mckeough
Link := Coded_by_FXFisherman_ZeroCode_@www.fxfisherman.com
Lots := 1
Stop Loss := 10
Take Profit := 10
Trailing Stop := 10
]]*/
defines: Slippage(3);
defines: ;
var: cnt(0),IsBuying(False),IsSelling(False),IsClosing(False),RealTP(0),RealSL(0);
var: rsi3_1(0),rsi3_0(0),stoc4d_1(0),stoc4d_0(0),stoc4k_1(0),stoc4k_0(0),ma1_1(0),ma1_0(0),ma2_1(0),ma2_0(0);
// Check for invalid bars and takeprofit
If Bars<200 then Exit;
// Calculate indicators' value
rsi3_1 = iRSI(20,1);
rsi3_0 = iRSI(20,0);
stoc4d_1 = iSTO(21,6,6,MODE_SMA,MODE_SIGNAL,1);
stoc4d_0 = iSTO(21,6,6,MODE_SMA,MODE_SIGNAL,0);
stoc4k_1 = iSTO(21,6,6,MODE_SMA,MODE_MAIN,1);
stoc4k_0 = iSTO(21,6,6,MODE_SMA,MODE_MAIN,0);
ma1_1 = iMAEx(10,MODE_LWMA,0,PRICE_CLOSE,1);
ma1_0 = iMAEx(10,MODE_LWMA,0,PRICE_CLOSE,0);
ma2_1 = iMAEx(10,MODE_SMA,0,PRICE_CLOSE,1);
ma2_0 = iMAEx(10,MODE_SMA,0,PRICE_CLOSE,0);
// Check for BUY, SELL, and CLOSE signal
IsBuying = (ma1_1 <= ma2_1)
and (ma1_0 > ma2_0);
IsSelling = (ma1_1 >= ma2_1)
and (ma1_1 < ma2_0);
IsClosing = False;
// Control open trades
for cnt=1 to TotalTrades
{
// Control only market trades not entry order
if OrderValue(cnt,VAL_TYPE)<=OP_SELL and
OrderValue(cnt,VAL_SYMBOL)=Symbol then
{
// Check for close signal for bought trade
If OrderValue(cnt,VAL_TYPE)=OP_BUY then
{
If IsSelling or IsClosing then
{
// Close bought trade
CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Bid,3,Violet);
Alert("Turbo Trader: Closing BUY order.");
};
// Check trailing stop
If TrailingStop>0 then
{
If (Bid-OrderValue(cnt,VAL_OPENPRICE))>(Point*TrailingStop) then
{
If OrderValue(cnt,VAL_STOPLOSS)<(Bid-Point*TrailingStop) then
{
// Modify trailing stop
ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),
Bid-Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROFIT),Red);
};
};
};
}
else
{
// Check sold trade for close signal
If IsBuying or IsClosing then
{
CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Ask,3,Violet);
Alert("Turbo Trader: Closing SELL order.");
};
// Control trailing stop
If TrailingStop>0 then
{
If (OrderValue(cnt,VAL_OPENPRICE)-Ask)>(Point*TrailingStop) then
{
If OrderValue(cnt,VAL_STOPLOSS)=0 or
OrderValue(cnt,VAL_STOPLOSS)>(Ask+Point*TrailingStop) then
{
ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),
Ask+Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROFIT),Red);
};
};
};
};
};
};
// If there is no open trade
If TotalTrades<1 then
{
// If we have enough money for 1 lot
If FreeMargin<1000 then Exit;
// Check for BUY entry signal
If IsBuying and IsSelling=False and IsClosing=False then
{
// Buy
If StopLoss>0 then
{
RealSL=Ask-StopLoss*Point;
}
If TakeProfit>0 then
{
RealTP=Ask+TakeProfit*Point;
}
SetOrder(OP_BUY,Lots,Ask, Slippage,RealSL,RealTP,RED);
Alert("Turbo Trader: Buying");
};
// Check for SELL entry signal
If IsSelling and IsBuying=False and IsClosing=False then
{
// Sell
If StopLoss>0 then
{
RealSL=Bid+StopLoss*Point;
}
If TakeProfit>0 then
{
RealTP=Bid-TakeProfit*Point;
}
SetOrder(OP_SELL,Lots,Bid,Slippage,RealSL,RealTP,RED);
Alert("Turbo Trader: Selling");
};
};
//-------------- Coded by FXFisherman ZeroCode v1.0.2014.30845
something like this:
/*[[
Name := Turbo Trader
Author := Mike Mckeough
Link := Coded_by_FXFisherman_ZeroCode_@www.fxfisherman.com
Lots := 1
Stop Loss := 10
Take Profit := 10
Trailing Stop := 10
]]*/
defines: Slippage(3);
defines: ;
var: cnt(0),IsBuying(False),IsSelling(False),IsClosing(False),RealTP(0),RealSL(0);
var: rsi3_1(0),rsi3_0(0),stoc4d_1(0),stoc4d_0(0),stoc4k_1(0),stoc4k_0(0),ma1_1(0),ma1_0(0),ma2_1(0),ma2_0(0);
// Check for invalid bars and takeprofit
If Bars<200 then Exit;
// Calculate indicators' value
rsi3_1 = iRSI(20,1);
rsi3_0 = iRSI(20,0);
stoc4d_1 = iSTO(21,6,6,MODE_SMA,MODE_SIGNAL,1);
stoc4d_0 = iSTO(21,6,6,MODE_SMA,MODE_SIGNAL,0);
stoc4k_1 = iSTO(21,6,6,MODE_SMA,MODE_MAIN,1);
stoc4k_0 = iSTO(21,6,6,MODE_SMA,MODE_MAIN,0);
ma1_1 = iMAEx(10,MODE_LWMA,0,PRICE_CLOSE,1);
ma1_0 = iMAEx(10,MODE_LWMA,0,PRICE_CLOSE,0);
ma2_1 = iMAEx(10,MODE_SMA,0,PRICE_CLOSE,1);
ma2_0 = iMAEx(10,MODE_SMA,0,PRICE_CLOSE,0);
// Check for BUY, SELL, and CLOSE signal
IsBuying = (ma1_1 <= ma2_1) and (ma1_0 > ma2_0) and (stoc4k_0 > 50) and (stoc4k_1 < stoc4k_0) and
(rsi3_0 > 50) and (rsi3_1 < rsi3_0);
IsSelling = (ma1_1 >= ma2_1) and (ma1_1 < ma2_0) and (stoc4k_0 < 50) and (stoc4k_1 > stoc4k_0) and
(rsi3_0 < 50) and (rsi3_1 > rsi3_0);
IsClosing = False;
// Control open trades
for cnt=1 to TotalTrades
{
// Control only market trades not entry order
if OrderValue(cnt,VAL_TYPE)<=OP_SELL and
OrderValue(cnt,VAL_SYMBOL)=Symbol then
{
// Check for close signal for bought trade
If OrderValue(cnt,VAL_TYPE)=OP_BUY then
{
If IsSelling or IsClosing then
{
// Close bought trade
CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Bid,3,Violet);
Alert("Turbo Trader: Closing BUY order.");
};
// Check trailing stop
If TrailingStop>0 then
{
If (Bid-OrderValue(cnt,VAL_OPENPRICE))>(Point*TrailingStop) then
{
If OrderValue(cnt,VAL_STOPLOSS)<(Bid-Point*TrailingStop) then
{
// Modify trailing stop
ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),
Bid-Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROFIT),Red);
};
};
};
}
else
{
// Check sold trade for close signal
If IsBuying or IsClosing then
{
CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Ask,3,Violet);
Alert("Turbo Trader: Closing SELL order.");
};
// Control trailing stop
If TrailingStop>0 then
{
If (OrderValue(cnt,VAL_OPENPRICE)-Ask)>(Point*TrailingStop) then
{
If OrderValue(cnt,VAL_STOPLOSS)=0 or
OrderValue(cnt,VAL_STOPLOSS)>(Ask+Point*TrailingStop) then
{
ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),
Ask+Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROFIT),Red);
};
};
};
};
};
};
// If there is no open trade
If TotalTrades<1 then
{
// If we have enough money for 1 lot
If FreeMargin<1000 then Exit;
// Check for BUY entry signal
If IsBuying and IsSelling=False and IsClosing=False then
{
// Buy
If StopLoss>0 then
{
RealSL=Ask-StopLoss*Point;
}
If TakeProfit>0 then
{
RealTP=Ask+TakeProfit*Point;
}
SetOrder(OP_BUY,Lots,Ask, Slippage,RealSL,RealTP,RED);
Alert("Turbo Trader: Buying");
};
// Check for SELL entry signal
If IsSelling and IsBuying=False and IsClosing=False then
{
// Sell
If StopLoss>0 then
{
RealSL=Bid+StopLoss*Point;
}
If TakeProfit>0 then
{
RealTP=Bid-TakeProfit*Point;
}
SetOrder(OP_SELL,Lots,Bid,Slippage,RealSL,RealTP,RED);
Alert("Turbo Trader: Selling");
};
};
//-------------- Coded by FXFisherman ZeroCode v1.0.2014.30845
Yes This is exactly what I am looking to do.
Thank You Very, Much I appreciate your help
Mike
Thank You Very, Much I appreciate your help
Mike
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
RSI: buy when RSI is above 50
Stochastic: Osc Buy when Stoch is above 50
RSI: sell when RSI is below 50
Stochastic Osc; sell when Stochastic is below 50
Thank You
Mike