[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 67
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всем привет
Решил я стать писателем. Захотел написать что нибудь на иностранном языке MQL4. Почитал кое что о нем, ну сюжет родился простенький написать эксперт чтобы открывал позицию sel когда RSI с периодом 8 пересекает 70 и закрывать позицию когда пересекает уровень 30 и чтобы ничего другого не происходило. Написал, вот код
//+------------------------------------------------------------------+//| 4doc.mq4 |
//| Alex |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Alex"
#property link "http://www.metaquotes.net"
//---- input parameters
extern int PerRSI=8;
extern int MagicNamber=77771;
extern double Lots=1.0;
/+------------------------------------------------------------------+//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int
cnt=0,
ticket,
total;
double
rsi_0, // Значен. rsi_0 текущее
rsi_1; // Значен. rsi_1 1й бар
if (Bars<100)
{
Print("bars less than 100");
return(0);
}
rsi_0=iRSI(NULL,0, PerRSI,0,0); // Текущий бар
rsi_1=iRSI(NULL,0, PerRSI,0,1); // Текущий бар плюс 1
total=OrdersTotal();
if(total<1)
if(rsi_0 < rsi_1 && rsi_0 > 70) // Если линия пересекла 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 && // это открытая позиция? OP_BUY или OP_SELL
OrderSymbol()==Symbol()) // инструмент совпадает?
{
if(OrderType()==OP_SELL) // открыта кор позиция
{
if(rsi_0 > rsi_1 && rsi_0 < 30) // Если линия пересекла 30
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // закрываем позицию
return(0); // выходим
}}}}}
Потестил, все получается в основном как и хотелось. Решил изменить код, чтобы когда ССI – 14 пересекает уровень 100 – открывалась позиция sel, и закрывать позицию когда пересекает уровень – 100. Изменил RSI код под ССI , вот он.
//+------------------------------------------------------------------+//| CCI-DOC.mq4 |
//| Alex |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Alex"
#property link "http://www.metaquotes.net"
//---- input parameters
extern int PerCCI=14;
extern int MagicNamber=88881;
extern double Lots=1.0;
//+------------------------------------------------------------------+//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int
cnt=0,
ticket,
total;
double
cci_0, // Значен. cci_0 текущее
cci_1; // Значен. cci_1 1й бар
if (Bars<100)
{
Print("bars less than 100");
return(0);
}
cci_0=iRSI(NULL,0, PerCCI,0,0); // Текущий бар
cci_1=iRSI(NULL,0, PerCCI,0,1); // Текущий бар плюс 1
total=OrdersTotal();
if(total<1)
if(cci_0 < cci_1 && cci_0 > 100) // Если линия пересекла 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 && // это открытая позиция? OP_BUY или OP_SELL
OrderSymbol()==Symbol()) // инструмент совпадает?
{
if(OrderType()==OP_SELL) // открыта кор позиция
{
if(cci_0 > cci_1 && cci_0 < -100) // Если линия пересекла -100
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // закрываем позицию
return(0); // выходим
}}}}}
Стал CCI тестировать….. ну, ничего не происходит, не продает не покупает, в журнале ошибок нет, по окончанию теста открывает график кривой, но это не ССI, а RSI 70-30 с периодом 14….. Может быть кто нибудь из опытных писателей поймет и скажет почему так и как это исправить.
тогда на демо в журнале более четко прорисовывется все. Понятнее, где искать ошибку. Самому...
спасибо
Ещё раз здравствуйте!!!!!!!
Хотелось бы /неназойливо/;-)) напомнить о своём вопросе на стр. 64 про торговые условия для МАшки... заранее благодарен (за подзатыльник чайнику)
Господа, подскажите, если я использую в терминале несколько разных временных чартов одного торгового инструмента,
то как потребляется трафик программой? Потребляется ли трафик минимального таймфрейма, или трафик всех таймреймов?
Ещё раз здравствуйте!!!!!!!
Хотелось бы /неназойливо/;-)) напомнить о своём вопросе на стр. 64 про торговые условия для МАшки... заранее благодарен (за подзатыльник чайнику)
Спасибо за ответ!!!
1. Позвольте уточнить, две строчки с double open_0 и double_1 писать нужно ПЕРЕД строками double MA, или это некритично ??????...
2. В торговых условиях можно заменить open[0,1] на open_0,1 ????????.....
Спасибо за ответ!!!
1. Позвольте уточнить, две строчки с double open_0 и double_1 писать нужно ПЕРЕД строками double MA, или это некритично ??????...
2. В торговых условиях можно заменить open[0,1] на open_0,1 ????????.....
1. не критично
2. можно
Помогите пожалуйста... может быть я конечно лентяй, но никак не могу понять как подключить программу для торговли на демо или реальный счет... объясните пожалуйста что куда писать, куда петь, очень прошу... заранее спасибо!))
1. не критично
2. можно
CGFCB<J т. е. СПАСИБО!!!!