FREE FOREX STRATEGIES

Complex trading system #18 (SlingShot 30M)


Submitted by Charlie Johnson

I wanted to share something with you and was hoping you might post it somehow, I would love to get some feed back on it. First the the entry is articulated on a youtube video called "the sling shot trade" posted by user "forexautoscalper". This is a shot video and i hope that you will watch it Please. This is the entry for the strategy. This guy says it much clearer than i possibly could in an email.


Read entire post >>>


 


Hi All,

Pls do find below the code for 30M sling shot EA with additional money management & trailing stoploss features.
If anyone doesnt know how to compile the code & use, can request me a exe4 file format.
send a request mail to [email protected]
regds
Muzamil

//+------------------------------------------------------------------+
//| sling shot trader.mq4 |
//| muzamil |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Price_action_trader_v11.mq4 |
//| muzamil |
//| contact mail [email protected] |
//+------------------------------------------------------------------+
#property copyright "muzamil"
#property link "http://www.metaquotes.net"
#include
#define MAGICMA 20050610

extern int STP=40; //variable holding stop loss deviation position above or below the current candle high/low(4pips default)
extern int TP = 200; // take profit from the entry price (20 pips)
extern int DST = 10; //pips to be crossed above/below the previous candle high/low(1pip default)
extern int DST1 = 10; //pips to be crossed above/below the previous candle close(1pip default)
extern int TIME = 30; // time frame (30 mins default)
extern int MOV_BE = 40; //moving stop loss to breakeven once market moves the specified pips profit(4 pips default)
extern int TLS = 40; //trailing stop loss(4 pips)
extern int candle_length = 150; //minimum previous candle length(15 pips default)
extern int Trd_STRT_TME = 8; //trading initiating time(default 8 london open)
extern int Trd_END_TME = 20; //trades halting time(default 20)
extern bool EN_TLS = TRUE; //enable/disable the trailing stoploss(Enabled Default)
extern double Rsk_per_trd_prcntg = 1; // defining risk per trade(1% default)
extern double Cap_risk_prcntg = 10; // defining max risk on capital(10% default)

bool Trade_flag = 0;
bool sell_flag = 0;
bool buy_flag = 0,new_candle=0,stop_trading_flag = 0 ,BE_flag;
int ticket_no;
double rates_d1[5][6];
double open0,close0,high0,low0,open,close,high,low,open1,close1,high1,low1,open2,close2,high2,low2,open3,close3,high3,low3,risk_amount,risk_points;
double stop_loss,take_profit,LBOL,UBOL,BE_val,ask,TL,Initial_bal,Lot_size;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{

Comment("EA initialised!");
Initial_bal = AccountBalance();
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
Comment("EA deinitialised!");
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+

int start()
{

if((loss_stopout()==1)&&(stop_trading_flag == 0))
{
int ret=MessageBox("Max Capital Risk Limit Reached!",
"", MB_OK|MB_ICONEXCLAMATION|MB_TOPMOST);
if(ret==IDOK)
stop_trading_flag = 1;
}
if(stop_trading_flag == 1)
return(0);

if((Hour()>=Trd_STRT_TME)&&(Hour()<=Trd_END_TME)) //validating trading session
check_pattern(TIME);
else
return(0);

}

void check_pattern(int Time_frame)

{
new_candle = copy_rate(Time_frame); //copies the OHLC values of cureent & previous candles of the specified time & returns 1 when a new candle arrives

/*closing the opened orders on arrival of a new candle*/
if((new_candle==1)&&(OrdersTotal()>0))
{
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
ticket_no = OrderTicket();
if((OrderType() == OP_SELL))
OrderClose( ticket_no, Lot_size, Ask, 3,CLR_NONE);
if((OrderType() == OP_BUY))
OrderClose( ticket_no, Lot_size, Bid, 3,CLR_NONE);

}
/*resetting flags on arrival of a new candle*/

if((new_candle==1)&&(OrdersTotal()==0))
{

Trade_flag = 0;
BE_flag = 0;
buy_flag = 0;
sell_flag = 0;

}
/*copying the current candle values*/
LBOL = iBands(Symbol(),Time_frame,20,2,0,PRICE_LOW,MODE_LOWER,1);
UBOL = iBands(Symbol(),Time_frame,20,2,0,PRICE_LOW,MODE_UPPER,1);

if((Trade_flag == 0)&&((high-low)>=(candle_length*Point)))//cheking for no open trades previously & validating the previous candle length to be min 15 pips
{
if((low0<(low-DST1*Point))&&(open>close))//&&(close buy_flag = 1;

if((buy_flag == 1)&&(close0>(close+DST*Point))) // if previous condition is met wait for the price to go above previous close
{
stop_loss = low0-STP*Point; //calculating stop to be below the current candles low - 2 pips
take_profit = Ask+TP*Point;
Lot_size = money_management();
ticket_no=OrderSend(Symbol(),OP_BUY,Lot_size,Ask,3,stop_loss,take_profit ,"",MAGICMA,0,Red);//placing buy on validating the above condition
Trade_flag = 1;
buy_flag = 0;
BE_flag = 0;
}

if((high0>(high+DST1*Point))&&(openUBOL))
sell_flag = 1;

if((sell_flag == 1)&&(close0<(close-DST*Point)))
{
stop_loss = high0+STP*Point;
take_profit = Bid-TP*Point;
Lot_size = money_management();
ticket_no=OrderSend(Symbol(),OP_SELL,Lot_size,Bid,3,stop_loss,take_profit ,"",MAGICMA,0,Red);
Trade_flag = 1;
sell_flag = 0;
BE_flag = 0;
}
}
MOV_BE_fun();
}

void MOV_BE_fun()
{
if(OrdersTotal()>=1)
{

OrderSelect(ticket_no, SELECT_BY_TICKET);

if(OrderType() == OP_SELL)
{

if(((OrderOpenPrice()-Ask)>=MOV_BE*Point)&&(BE_flag == 0))
{
BE_val = OrderOpenPrice()-20*Point;
OrderModify( ticket_no, 0,BE_val, take_profit, 0, CLR_NONE);
BE_flag = 1;
ask = Ask;
}

if((BE_flag == 1)&&(Ask {
TL = Ask + (TLS*Point);
if(TL OrderModify( ticket_no, 0,TL, take_profit, 0, CLR_NONE);
ask = Ask;
}

}
if(OrderType() == OP_BUY)
{
if(((Bid - OrderOpenPrice())>=MOV_BE*Point)&&(BE_flag == 0))
{
BE_val = OrderOpenPrice()+20*Point;
OrderModify( ticket_no, 0, BE_val, take_profit, 0, CLR_NONE);
BE_flag = 1;
ask = Bid;
}
if((BE_flag == 1)&&(Bid>ask)&&(EN_TLS == 1))
{
TL = Bid - TLS*Point;
if(TL>BE_val)
OrderModify( ticket_no, 0,TL, take_profit, 0, CLR_NONE);
ask = Bid;
}
}
}
}

//function auto calculates the lotsize based on the risk defined by the user
double money_management()
{
double bal;
risk_amount = (AccountBalance()*(Rsk_per_trd_prcntg*0.01));
Lot_size = risk_amount/risk_points;
if(Lot_size<0.01)
Lot_size = 0.01;

return(Lot_size);

}

double loss_stopout()
{
double bal;
bal = (Initial_bal*(Cap_risk_prcntg*0.01));
if((Initial_bal-AccountBalance())>=bal)
return(1);
else
return(0);
}

/*function returns 1 on arrival of a new candle & copies the current & previous candle values in to given variables */
bool copy_rate(int Time_frame1)

{
bool same_candle_flag = 0;
ArrayCopyRates(rates_d1, Symbol(), Time_frame1);
if((close == rates_d1[1][4]) && (open == rates_d1[1][1]) && (high == rates_d1[1][3]) && (low == rates_d1[1][2]))
{
same_candle_flag = 1;
}
open0 = iOpen(Symbol(),Time_frame1,0);
high0 = iHigh(Symbol(),Time_frame1,0);
low0 = iLow(Symbol(),Time_frame1,0);
close0 = iClose(Symbol(),Time_frame1,0);

close = rates_d1[1][4];
open = rates_d1[1][1];
high = rates_d1[1][3];
low = rates_d1[1][2];

close1 = rates_d1[2][4];
open1 = rates_d1[2][1];
high1 = rates_d1[2][3];
low1 = rates_d1[2][2];

close2 = rates_d1[3][4];
open2 = rates_d1[3][1];
high2 = rates_d1[3][3];
low2 = rates_d1[3][2];

close3 = rates_d1[4][4];
open3 = rates_d1[4][1];
high3 = rates_d1[4][3];
low3 = rates_d1[4][2];
if(same_candle_flag == 1)
return(0);
else
return(1);
}

Hi all,

Pls do find the updated version EA for the strategy.
where in i have incorporated features like trailing stoploss & defining candle stick length & moving sl to BE.
hope you will enjoy my EA.
regds
Muzamil

//+------------------------------------------------------------------+
//| Price_action_trader_v11.mq4 |
//| muzamil |
//| contact mail [email protected] |
//+------------------------------------------------------------------+
#property copyright "muzamil"
#property link "http://www.metaquotes.net"
#include
#define MAGICMA 20050610

extern int STP=40; //variable holding stop loss deviation position above or below the current candle high/low(4pips default)
extern int TP = 200; // take profit from the entry price (20 pips)
extern int DST = 10; //pips to be crossed above/below the previous candle high/low(1pip default)
extern int DST1 = 10; //pips to be crossed above/below the previous candle close(1pip default)
extern int TIME = 30; // time frame (30 mins default)
extern int MOV_BE = 40; //moving stop loss to breakeven once market moves the specified pips profit(4 pips default)
extern int TLS = 40; //trailing stop loss(4 pips)
extern int candle_length = 150; //minimum previous candle length(15 pips default)
extern int Trd_STRT_TME = 8; //trading initiating time(default 8 london open)
extern int Trd_END_TME = 20; //trades halting time(default 20)
extern bool EN_TLS = TRUE; //enable/disable the trailing stoploss(Enabled Default)

extern double Lot_size = 1;
bool Trade_flag = 0;
bool sell_flag = 0;
bool buy_flag = 0,new_candle=0,stop_trading_flag = 0 ,BE_flag;
int ticket_no;
double rates_d1[5][6];
double open0,close0,high0,low0,open,close,high,low,open1,close1,high1,low1,open2,close2,high2,low2,open3,close3,high3,low3,risk_amount,risk_points;
double stop_loss,take_profit,LBOL,UBOL,BE_val,ask,TL;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{

Comment("EA initialised!");

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
Comment("EA deinitialised!");
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+

int start()
{
if((Hour()>=Trd_STRT_TME)&&(Hour()<=Trd_END_TME)) //validating trading session
check_pattern(TIME);
else
return(0);

}

void check_pattern(int Time_frame)

{
new_candle = copy_rate(Time_frame); //copies the OHLC values of cureent & previous candles of the specified time & returns 1 when a new candle arrives

/*closing the opened orders on arrival of a new candle*/
if((new_candle==1)&&(OrdersTotal()>0))
{
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
ticket_no = OrderTicket();
if((OrderType() == OP_SELL))
OrderClose( ticket_no, Lot_size, Ask, 3,CLR_NONE);
if((OrderType() == OP_BUY))
OrderClose( ticket_no, Lot_size, Bid, 3,CLR_NONE);

}
/*resetting flags on arrival of a new candle*/

if((new_candle==1)&&(OrdersTotal()==0))
{

Trade_flag = 0;
BE_flag = 0;
buy_flag = 0;
sell_flag = 0;

}
/*copying the current candle values*/
stop_loss = 0;
take_profit = 0;
LBOL = iBands(Symbol(),Time_frame,20,2,0,PRICE_LOW,MODE_LOWER,1);
UBOL = iBands(Symbol(),Time_frame,20,2,0,PRICE_LOW,MODE_UPPER,1);

if((Trade_flag == 0)&&((high-low)>=(candle_length*Point)))//cheking for no open trades previously & validating the previous candle length to be min 15 pips
{
if((low0<(low-DST1*Point))&&(open>close))//&&(close buy_flag = 1;

if((buy_flag == 1)&&(close0>(close+DST*Point))) // if previous condition is met wait for the price to go above previous close
{
stop_loss = low0-STP*Point; //calculating stop to be below the current candles low - 2 pips
take_profit = Ask+TP*Point;
ticket_no=OrderSend(Symbol(),OP_BUY,Lot_size,Ask,3,stop_loss,take_profit ,"",MAGICMA,0,Red);//placing buy on validating the above condition
Trade_flag = 1;
buy_flag = 0;
}

if((high0>(high+DST1*Point))&&(openUBOL))
sell_flag = 1;

if((sell_flag == 1)&&(close0<(close-DST*Point)))
{
stop_loss = high0+STP*Point;
take_profit = Bid-TP*Point;

ticket_no=OrderSend(Symbol(),OP_SELL,Lot_size,Bid,3,stop_loss,take_profit ,"",MAGICMA,0,Red);
Trade_flag = 1;
sell_flag = 0;
}
}
MOV_BE_fun();
}

void MOV_BE_fun()
{
if(OrdersTotal()>=1)
{

OrderSelect(ticket_no, SELECT_BY_TICKET);

if(OrderType() == OP_SELL)
{

if(((OrderOpenPrice()-Ask)>=MOV_BE*Point)&&(BE_flag == 0))
{
BE_val = OrderOpenPrice()-20*Point;
OrderModify( ticket_no, 0,BE_val, take_profit, 0, CLR_NONE);
BE_flag = 1;
ask = Ask;
}

if((BE_flag == 1)&&(Ask {
TL = Ask + (TLS*Point);
if(TL OrderModify( ticket_no, 0,TL, take_profit, 0, CLR_NONE);
ask = Ask;
}

}
if(OrderType() == OP_BUY)
{
if(((Bid - OrderOpenPrice())>=MOV_BE*Point)&&(BE_flag == 0))
{
BE_val = OrderOpenPrice()+20*Point;
OrderModify( ticket_no, 0, BE_val, take_profit, 0, CLR_NONE);
BE_flag = 1;
ask = Bid;
}
if((BE_flag == 1)&&(Bid>ask)&&(EN_TLS == 1))
{
TL = Bid - TLS*Point;
if(TL>BE_val)
OrderModify( ticket_no, 0,TL, take_profit, 0, CLR_NONE);
ask = Bid;
}
}
}
}
/*function returns 1 on arrival of a new candle & copies the current & previous candle values in to given variables */
bool copy_rate(int Time_frame1)

{
bool same_candle_flag = 0;
ArrayCopyRates(rates_d1, Symbol(), Time_frame1);
if((close == rates_d1[1][4]) && (open == rates_d1[1][1]) && (high == rates_d1[1][3]) && (low == rates_d1[1][2]))
{
same_candle_flag = 1;
}
open0 = iOpen(Symbol(),Time_frame1,0);
high0 = iHigh(Symbol(),Time_frame1,0);
low0 = iLow(Symbol(),Time_frame1,0);
close0 = iClose(Symbol(),Time_frame1,0);

close = rates_d1[1][4];
open = rates_d1[1][1];
high = rates_d1[1][3];
low = rates_d1[1][2];

close1 = rates_d1[2][4];
open1 = rates_d1[2][1];
high1 = rates_d1[2][3];
low1 = rates_d1[2][2];

close2 = rates_d1[3][4];
open2 = rates_d1[3][1];
high2 = rates_d1[3][3];
low2 = rates_d1[3][2];

close3 = rates_d1[4][4];
open3 = rates_d1[4][1];
high3 = rates_d1[4][3];
low3 = rates_d1[4][2];
if(same_candle_flag == 1)
return(0);
else
return(1);
}

WOW !!

Zeke

Hi Martin This Is Muzamil Ali Khan here.
I coded your logic & back tested the same but not getting appreciable results, the whole account is moving towards negative.
just check the code & clarify if any changes.

//+------------------------------------------------------------------+
//| Price_action_trader_v11.mq4 |
//| muzamil |
//| contact mail [email protected] |
//+------------------------------------------------------------------+
#property copyright "muzamil"
#property link "http://www.metaquotes.net"
#include
#define MAGICMA 20050610

extern int STP=50;
extern int TP = 200;
extern int DST = 10;
extern int TIME = 30;
extern double Lot_size = 1;
bool Trade_flag = 0;
bool sell_flag = 0;
bool buy_flag = 0,new_candle=0,stop_trading_flag = 0 ,BE_flag;
int ticket_no;
double rates_d1[5][6];
double open0,close0,high0,low0,open,close,high,low,open1,close1,high1,low1,open2,close2,high2,low2,open3,close3,high3,low3,risk_amount,risk_points;
double stop_loss,take_profit;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{

Comment("EA initialised!");

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
Comment("EA deinitialised!");
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+

int start()
{
int Timer;

check_pattern(TIME);

}

void check_pattern(int Time_frame)

{
new_candle = copy_rate(Time_frame); //copies the OHLC values of cureent & previous candles of the specified time & returns 1 when a new candle arrives

/*closing the opened orders on arrival of a new candle*/
if((new_candle==1)&&(OrdersTotal()>0))
{
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
ticket_no = OrderTicket();
if((OrderType() == OP_SELL))
OrderClose( ticket_no, Lot_size, Ask, 3,CLR_NONE);
if((OrderType() == OP_BUY))
OrderClose( ticket_no, Lot_size, Bid, 3,CLR_NONE);

}
/*resetting flags on arrival of a new candle*/

if((new_candle==1)&&(OrdersTotal()==0))
{

Trade_flag = 0;
BE_flag = 0;
buy_flag = 0;
sell_flag = 0;

}
/*copying the current candle values*/
stop_loss = 0;
take_profit = 0;

if((Trade_flag == 0)&&((high-low)>=(150*Point))&& (Hour()>7)&&(Hour()<21))//cheking for no open trades previously & validating the previous candle length to be min 15 pips & time between active london session
{
if((low0<(low))&&(open>close))//checking the break of previous low & validating the previous candle to be bearish
buy_flag = 1;

if((buy_flag == 1)&&(close0>(close+DST*Point))) // if previous condition is met wait for the price to go above previous close
{
stop_loss = low0-STP*Point; //calculating stop to be below the current candles low - 2 pips
take_profit = Ask+TP*Point;
ticket_no=OrderSend(Symbol(),OP_BUY,Lot_size,Ask,3,stop_loss,take_profit ,"",MAGICMA,0,Red);//placing buy on validating the above condition
Trade_flag = 1;
buy_flag = 0;
}

if((high0>(high))&&(open sell_flag = 1;

if((sell_flag == 1)&&(close0<(close-DST*Point)))
{
stop_loss = high0+STP*Point;
take_profit = Bid-TP*Point;

ticket_no=OrderSend(Symbol(),OP_SELL,Lot_size,Bid,3,stop_loss,take_profit ,"",MAGICMA,0,Red);
Trade_flag = 1;
sell_flag = 0;
}
}

}

/*function returns 1 on arrival of a new candle & copies the current & previous candle values in to given variables */
bool copy_rate(int Time_frame1)

{
bool same_candle_flag = 0;
ArrayCopyRates(rates_d1, Symbol(), Time_frame1);
if((close == rates_d1[1][4]) && (open == rates_d1[1][1]) && (high == rates_d1[1][3]) && (low == rates_d1[1][2]))
{
same_candle_flag = 1;
}
open0 = iOpen(Symbol(),Time_frame1,0);
high0 = iHigh(Symbol(),Time_frame1,0);
low0 = iLow(Symbol(),Time_frame1,0);
close0 = iClose(Symbol(),Time_frame1,0);

close = rates_d1[1][4];
open = rates_d1[1][1];
high = rates_d1[1][3];
low = rates_d1[1][2];

close1 = rates_d1[2][4];
open1 = rates_d1[2][1];
high1 = rates_d1[2][3];
low1 = rates_d1[2][2];

close2 = rates_d1[3][4];
open2 = rates_d1[3][1];
high2 = rates_d1[3][3];
low2 = rates_d1[3][2];

close3 = rates_d1[4][4];
open3 = rates_d1[4][1];
high3 = rates_d1[4][3];
low3 = rates_d1[4][2];
if(same_candle_flag == 1)
return(0);
else
return(1);
}

Yeah, Martin is hard to reach. I wonder why ? The "Sling " may have some value applied to BINARY Options though.

You only need a ONE , yes 1 pip move , before expiration to have a profit. Most BInaries are on a 1 hour or 30 min.

time frame.

Seems to me the Slingshot method has a good chance to attain a meager 1 pip move . Also , NO need for a Stop

or target to worry about on Binaries .

Any thoughts on this ? C ' mon , everyone , pitch in. Google or Yahoo Binary Options. I am 85 years old and cannot

do it all !

Paul

I tryed to contact Martin Alexander with no luck. Any info about results of this method would be nice to know.

is anybody tested/traded using this method (not modified) just strictly following the rules? I'm trying for 2 days only (about 12 trades on demo is not enough to say it's good, of course). It would be nice to know if somebody took 200+ trades. May be there is an EA coded already?

i believe that it takes at least 100 trades to find out if a strategy is profitable. most novice traders come across a new strategy but if the first couple of trades are losers they say that the strategy is no good and move on to the next strategy, hoping to find the holy grail there.

regards

You might want to check the following link:
http://www.forexfactory.com/showthread.php?t=143819 (Slingshot-30 Min. PA System)
As I understood the strategy was not profitable. At least not on the M30 and H1 timeframe.

thanks, sounds great. I will test this sling shot 30 method for a week or two, starting on Monday, June 6. Will trade the major forex pairs only. Let's see how it will perform.

Greetings from Germany

Charlie what would be your minimum pips high-low range to define a setup day on the 4 and 8 hour charts?
Also how long have you, or anybody else, traded with the longer time frames and what were the results?
Thanks for the site guys, just discovered it!

This simple method would be ideal for 30 minute Binary Option trades. ( Do a Google or Yahoo search.)

Good Broker for 30 min. Binaries is my24option.com , based in London . Stay away from brokers located in Cyprus

George

Simple and logical . No indicators - good- they are not needed . Larry Williams had something similar eons ago called " Oops " . The best traders I have ever met use price action only.

Care to comment , Edward, or anyone ??

Stuart

The simple methods are best. Price action , properly used , is all you need . Indicators tell you where you've been ,

NOT where you should be going .

What say you all , out there ?

Paul


 

Post new comment

CAPTCHA
We read every comment. Proceed if you're a human: