Ваши вопросы по языку MQL4

conceptor

Активный участник
Подскажите, как наложить мувинг на MACD
С навигатора перетягиваешь на открытый макди, выбираешь First Indikators data.

3800993.jpg
 
Последнее редактирование модератором:

asers1111

Активный участник
Добрый день.Я пытаюсь изучать програмирование - пока еще недалеко ушел.Подскажите пожалуйста,как можно в коде записать мое условие на открытие ордера.Я его приложил в файле.У меня упорно не работает цикл for.Сделка открывается только если одновременно линии пересекаются,а если линия подтверждающего индикатора пересекает свой уровень позже,то цикл не работает.Что-то пока не понимаю,наверное....Немогли бы вы записать мое условие кодом(если вас не затруднит) - это был бы настольный учебник для меня.
 

Вложения

  • Код.txt
    1,5 КБ · Просмотры: 22

qqmber

Почетный гражданин
У меня возникла проблема, после недавнего обновления мт4 с добавлением торговли в один клик, у меня перестали обнаруживаться некоторые индикаторы расширением mq4. До обновления все работало нормально... Что можно сделать?
Есть предположение, что эти mq4 - декомпилы. С некоторых пор терминал отказывается с ними работать.
 

qqmber

Почетный гражданин
Добрый день.Я пытаюсь изучать програмирование - пока еще недалеко ушел.Подскажите пожалуйста,как можно в коде записать мое условие на открытие ордера.Я его приложил в файле.У меня упорно не работает цикл for.Сделка открывается только если одновременно линии пересекаются,а если линия подтверждающего индикатора пересекает свой уровень позже,то цикл не работает.Что-то пока не понимаю,наверное....Немогли бы вы записать мое условие кодом(если вас не затруднит) - это был бы настольный учебник для меня.

Пересечение стохастиков надо на каждом из 8 баров проверять, т.е. вычислять их внутри for цикла.
Знаки < > поставить как надо.
Убрать кривой лишний &&OrderClose().
 

asers1111

Активный участник
Пересечение стохастиков надо на каждом из 8 баров проверять, т.е. вычислять их внутри for цикла.
Знаки < > поставить как надо.
Убрать кривой лишний &&OrderClose().

Спасибо за ответ.Получается,что цикл здесь вообще не нужен?Это придется такую писанину огромную делать - для восьми баров?
 

qqmber

Почетный гражданин
Спасибо за ответ.Получается,что цикл здесь вообще не нужен?Это придется такую писанину огромную делать - для восьми баров?
Цикл нужен, надо внутрь него вычисление стохастиков занести. Как-то так.
Код:
   if(RSI>50 && RSI1<50 && CountBuy()==0)
        {
        for(bar=1;bar<8;bar++)
        {
          double STOCHASTIK = iStochastic(NULL,0,28,10,10,MODE_EMA,1,0,bar);
          double STOCHASTIK1 = iStochastic(NULL,0,28,10,10,MODE_EMA,1,0,bar+1);

        if(STOCHASTIK>20 && STOCHASTIK1<20 && CountBuy()==0)
        {
        ticket= OrderSend(Symbol(),OP_BUY,Lots,Ask,5,0,0,comment,Magic,0,Green);
        break;
        }
        }
        }
 
Последнее редактирование:

asers1111

Активный участник
Цикл нужен, надо внутрь него вычисление стохастиков занести. Как-то так.
Код:
   if(RSI>50 && RSI1<50 && CountBuy()==0)
        {
        for(bar=1;bar<8;bar++)
        {
          double STOCHASTIK = iStochastic(NULL,0,28,10,10,MODE_EMA,1,0,bar);
          double STOCHASTIK1 = iStochastic(NULL,0,28,10,10,MODE_EMA,1,0,bar+1);

        if(STOCHASTIK>20 && STOCHASTIK1<20 && CountBuy()==0)
        {
        ticket= OrderSend(Symbol(),OP_BUY,Lots,Ask,5,0,0,comment,Magic,0,Green);
        break;
        }
        }
        }

Простите пожалуйста,но тут у меня сразу вопрос возник : А как с компиллятором договориться? Ведь он пишет variable already defined ,указывая на double STOCHASTIK и double STOCHASTIK1.
 

qqmber

Почетный гражданин
Простите пожалуйста,но тут у меня сразу вопрос возник : А как с компиллятором договориться? Ведь он пишет variable already defined ,указывая на double STOCHASTIK и double STOCHASTIK1.
Ну так убрать эти строчки выше if(). Они по идее только внутри цикла должны быть.
 

asers1111

Активный участник
Ну так убрать эти строчки выше if(). Они по идее только внутри цикла должны быть.

double STOCHASTIK = iStochastic(NULL,0,28,10,10,MODE_EMA,1,0,bar) ;
double STOCHASTIK1 = iStochastic(NULL,0,28,10,10,MODE_EMA,1,0,bar+1);


if(RSI>50 && RSI1<50 && CountBuy()==0)
{
for(bar=1;bar<8;bar++)
{

if(STOCHASTIK>20 && STOCHASTIK1<20 && CountBuy()==0)
{
ticket= OrderSend(Symbol(),OP_BUY,Lots,Ask,5,0,0,comment,Magic,0,Green);
break;
}
}
}

if(RSI<50 && RSI1>50 && CountSell()==0)
{
for(bar=1;bar<8;bar++)
{

if(STOCHASTIK<80 && STOCHASTIK1>80 && CountSell()==0)
{
ticket= OrderSend(Symbol(),OP_SELL,Lots,Bid,5,0,0,comment,Magic,0,Red);
break;
}
}
}

Так получается практически тоже,что я в файле прикреплял.И отказывается работать почему-то.....Я попробовал побарно расписать весь этот цикл из 8-ми баров и тут результат есть! Сделки открываются правильно......Только вот писанины - очень много... Что же поделать тут?
 

qqmber

Почетный гражданин
Так, я наверное слишком краток.
Эти две строчки надо передвинуть с того места, где они были, внутрь цикла.
Код:
int start()
  {
     int ticket;
     int bar =1;
     
  
  double RSI = iRSI(NULL,0,21,PRICE_LOW,bar);
  double RSI1 = iRSI(NULL,0,21,PRICE_LOW,bar+1);
  
  
   if(RSI>50 && RSI1<50 && CountBuy()==0)
        {
        for(bar=1;bar<8;bar++)
	{
  	double STOCHASTIK = iStochastic(NULL,0,28,10,10,MODE_EMA,1,0,bar);
  	double STOCHASTIK1 = iStochastic(NULL,0,28,10,10,MODE_EMA,1,0,bar+1);
        
        if(STOCHASTIK>20 && STOCHASTIK1<20 && CountBuy()==0)
        {
        ticket= OrderSend(Symbol(),OP_BUY,Lots,Ask,5,0,0,comment,Magic,0,Green);
	break;
	}
        }
	}
   return(0);
 }
 

zipinter

Protester
Всем привет!
Кто знает, как эдитор определяет, что код декомпилирован? У меня есть мои проекты, но он их тоже бракует и обзывает декомпилами.
Может введены какие-то изменения и нужно просто их переписать вручную?

Всем профитов!
 

zipinter

Protester
Вообщем, потратил час на обнаружение причины, может кому пригодится:

Начал копировать код частями в советник, вновь созданный в билде 507.
При добавлении очередной функции, компилятор начал ругаться известой фразой "using of decompiled source code is prohibited".
В конечном итоге, победил эту хрень тем, что переименовал переменные в операторе "for", после этого пока компилируется.
Буду продолжать загонять код таким образом, если вылезут еще какие-то подводные камни, то отпишусь.

Всем профитов!
 

smartmans

Активный участник
Парни, где поправить код, чтобы не дергался на каждом тике. Можно, к примеру на открытии нового бара
PHP:
int start()
 {
   int i, limit, counted_bars=IndicatorCounted();

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   if (limit>Count_bars && Count_bars>0) limit=Count_bars;

   for(i=limit;i>=0;i--)

  {
   if (Time[i] != oldTime)
     {
       oldTime = Time[i];
       Fr[i+1]   = EMPTY_VALUE;   

.......

if (n_h <= n_h && n_d <= n_d && n_w >= n_w && n_L >= n_L )
        if (Alert_ON && i == 1) Alert("Алерт");
        if (Sound_ON && i == 1) PlaySound(Sound_Fr);
 
Последнее редактирование:

asers1111

Активный участник
Помогите советом,пожалуйста.
Добрый день всем.Пытаюсь изучать MQL4 и пытаюсь писать советник на пользовательских индикаторах.Но при обращении к некоторым индикаторам ,почему-то в тестере замедляется работа,а при нажатии "Стоп",получается серо-белесый экран,на котором ничего не отрисовывается.Попробовал так индикаторы : RSIOMA ,
pa wprsmooth_histo_ma , MA_RSI_BB......Подскажите,пожалуйста что нужно СДЕЛАТЬ или НЕ ДЕЛАТЬ, чтобы можно было использовать такие индикаторы.Заранее благодарен за ответ.

extern string PA_WPR ="Настройки индикатора pa wprsmooth_w_histo_ma";
extern double filter = 1.0;
extern double cycles = 5.0;
extern double mafilter = 1.0;
extern double macycles = 1.0;
extern int SmoothLength = 5;
extern double SmoothPhase = 0;
extern bool ShowHistogram = false;
extern bool ShowUpDownLimit = true;
extern double lowerlevel = -40.0;
extern double upperlevel = 40;
extern bool arrowsVisible = false;
extern bool arrowsOnZeroCross = true;
extern double arrowsDistance = 1.0;
extern string arrowsIdentifier = "wprSmoothArrows";
extern color arrowsUpColor = DeepSkyBlue;
extern color arrowsDnColor = PaleVioletRed;

int ticket2;
//+------------------------------------------------------------------+
int start()
{
int ticket;

int bar =1;

double PAperuUP = iCustom(Symbol(),0,"pa wprsmooth_w_histo_ma",filter,cycles,mafilter,macycles,
SmoothLength,SmoothPhase,lowerlevel,upperlevel,arrowsDistance,0,bar);
double PAperuDN = iCustom(Symbol(),0,"pa wprsmooth_w_histo_ma",filter,cycles,mafilter,macycles,
SmoothLength,SmoothPhase,lowerlevel,upperlevel,arrowsDistance,1,bar);
double PAViolet = iCustom(Symbol(),0,"pa wprsmooth_w_histo_ma",filter,cycles,mafilter,macycles,
SmoothLength,SmoothPhase,lowerlevel,upperlevel,arrowsDistance,4,bar);
 

Вложения

  • Безымянный1.jpg
    Безымянный1.jpg
    182,9 КБ · Просмотры: 22

AlexeyVik

Программист mql4 mql5
Помогите советом,пожалуйста.
Добрый день всем.Пытаюсь изучать MQL4 и пытаюсь писать советник на пользовательских индикаторах.Но при обращении к некоторым индикаторам ,почему-то в тестере замедляется работа,а при нажатии "Стоп",получается серо-белесый экран,на котором ничего не отрисовывается.Попробовал так индикаторы : RSIOMA ,
pa wprsmooth_histo_ma , MA_RSI_BB......Подскажите,пожалуйста что нужно СДЕЛАТЬ или НЕ ДЕЛАТЬ, чтобы можно было использовать такие индикаторы.Заранее благодарен за ответ.

extern string PA_WPR ="Настройки индикатора pa wprsmooth_w_histo_ma";
extern double filter = 1.0;
extern double cycles = 5.0;
extern double mafilter = 1.0;
extern double macycles = 1.0;
extern int SmoothLength = 5;
extern double SmoothPhase = 0;
extern bool ShowHistogram = false;
extern bool ShowUpDownLimit = true;
extern double lowerlevel = -40.0;
extern double upperlevel = 40;
extern bool arrowsVisible = false;
extern bool arrowsOnZeroCross = true;
extern double arrowsDistance = 1.0;
extern string arrowsIdentifier = "wprSmoothArrows";
extern color arrowsUpColor = DeepSkyBlue;
extern color arrowsDnColor = PaleVioletRed;

int ticket2;
//+------------------------------------------------------------------+
int start()
{
int ticket;

int bar =1;

double PAperuUP = iCustom(Symbol(),0,"pa wprsmooth_w_histo_ma",filter,cycles,mafilter,macycles,
SmoothLength,SmoothPhase,lowerlevel,upperlevel,arrowsDistance,0,bar);
double PAperuDN = iCustom(Symbol(),0,"pa wprsmooth_w_histo_ma",filter,cycles,mafilter,macycles,
SmoothLength,SmoothPhase,lowerlevel,upperlevel,arrowsDistance,1,bar);
double PAViolet = iCustom(Symbol(),0,"pa wprsmooth_w_histo_ma",filter,cycles,mafilter,macycles,
SmoothLength,SmoothPhase,lowerlevel,upperlevel,arrowsDistance,4,bar);
А ты посчитай сколько параметров входит в индикатор и сколько вписано в iCustom() у тебя. И посмотри что пишет в журнале.
 

asers1111

Активный участник
Спасибо,что так быстро ответили....А тогда вопрос сразу : Я не включил строковый параметр и цветовые.Их тоже надо вносить?А со строковым как быть?
 

asers1111

Активный участник
Пишет,что pa wprsmooth_histo_ma loaded sacsessfully.........
А как еще с bool параметрами быть?
 

asers1111

Активный участник
А ты посчитай сколько параметров входит в индикатор и сколько вписано в iCustom() у тебя. И посмотри что пишет в журнале.

Большое спасибо за отзывчивость.Вписал все как есть в списке и заработало!Спасибо!
 
Верх