[WARNING CLOSED!] Any newbie question, so as not to clutter up the forum. Professionals, don't go by. Can't go anywhere without you. - page 67
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
Hello, everyone.
I decided to become a writer. I wanted to write something in MQL4. I've read something about it and decided to write an Expert Advisor, which would open position when RSI with period 8 cross 70 and close position when crosses 30 and nothing else would happen. I wrote it, here is the code
//+------------------------------------------------------------------+//| 4doc.mq4 |
//| Alex |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Alex"
#property link "http://www.metaquotes.net"
//---- input parameters
extern int PerRSI=8;
extern int intNamber=77771;
extern double Lots=1.0;
/+------------------------------------------------------------------+//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int
cnt=0,
ticket,
total;
double
rsi_0, //value. rsi_0 current
rsi_1; // Value. rsi_1 1st bar
if (Bars<100)
{
Print("bars less than 100");
return(0);
}
rsi_0=iRSI(NULL,0, PerRSI,0,0); // Current bar
rsi_1=iRSI(NULL,0, PerRSI,0,1); // Current bar plus 1
total=OrdersTotal();
if(total<1)
if(rsi_0 < rsi_1 && rsi_0 > 70) // If line has crossed 70
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "My RSI", MagicNamber,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice())
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
RefreshRates();
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // this is an open position? OP_BUY or OP_SELL
OrderSymbol()==Symbol()) // tool match?
{
if(OrderType()==OP_SELL) // position is open
{
if(rsi_0 > rsi_1 && rsi_0 < 30) // If line has crossed 30
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
return(0); // exit
}}}}}
I have tested it and it works mostly as I wanted. I have decided to change the code, to open a position when SSI - 14 crosses level 100, and to close a position when crosses level 100. I changed RSI code for CCI , here it is.
//+------------------------------------------------------------------+//| CCI-DOC.mq4 |
//| Alex |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Alex"
#property link "http://www.metaquotes.net"
//---- input parameters
extern int PerCCI=14;
extern inttern MagicNamber=88881;
extern double Lots=1.0;
//+------------------------------------------------------------------+//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int
cnt=0,
ticket,
total;
double
cci_0, // cci_0 value. cci_0 current
cci_1; // cci_1 value. cci_1 1st bar
if (Bars<100)
{
Print("bars less than 100");
return(0);
}
cci_0=iRSI(NULL,0, PerCCI,0,0); // Current bar
cci_1=iRSI(NULL,0, PerCCI,0,1); // current bar plus 1
total=OrdersTotal();
if(total<1)
if(cci_0 < cci_1 && cci_0 > 100) // if(line has crossed 100
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "My CCI", MagicNamber,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice())
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // this is an open position? OP_BUY or OP_SELL
OrderSymbol()==Symbol()) // tool match?
{
if(OrderType()==OP_SELL) // position is open
{
if(cci_0 > cci_1 && cci_0 < -100) // if line has crossed -100
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
return(0); // exit
}}}}}
Started to test CCI ..... well, nothing happens, does not sell or buy, no errors in the log, at the end of the test opens curve chart, but it is not CCI, but RSI 70-30 with period 14..... Maybe one of the experienced writers will understand and tell why and how to fix it.
Then the demo in the log shows everything more clearly. It's clearer where to look for the error. On my own...
>> thank you
Hello again!!!!!!!
I would like to /non-intrusively/;-)) remind you of your question on p. 64 about trading conditions for MA... thank you in advance (for a kick in the pants for a dummie)
Gentlemen, can you tell me if I use several different time charts of the same trading instrument in the terminal?
How is traffic consumed by the program? Does it consume traffic of the minimum timeframe, or traffic of all timeframes?
Hello again!!!!!!!
I would like to /non-intrusively/;-)) remind you of your question on p. 64 about trading conditions for MA... thank you in advance (for the kick in the pants to the dummies)
Thanks for the reply!!!
1. Let me clarify, do the two lines with double open_0 and double_1 need to be written BEFORE the double MA lines, or is it uncritical ??????...
2. In the trading conditions you can replace open[0,1] by open_0,1 ????????.....
Thanks for the reply!!!
1. Let me clarify, do the two lines with double open_0 and double_1 need to be written BEFORE the double MA lines, or is it uncritical ??????...
2. You can replace open[0,1] with open_0,1 ????????.....
1. not critical.
2. can
Help please... I may be lazy, but I can not figure out how to connect the program to trade on a demo or real account... Please explain what to write and where to sing, I'm begging you... thanks in advance!))
1. not critical
2. can
CGFCB<J i.e. THANK YOU!!!!