Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 114

 
MarkTrade:

Прошу прощения, объясните в чем тут ошибка. Я не могу понять.


for (i=0;i>5<==ошибка;i++)
 
MarkTrade:

Прошу прощения, объясните в чем тут ошибка. Я не могу понять.

Давайте разжуём строку

for (i=0;i<5;i++)

Пусть i будет изменяться от нуля до пяти. После каждой итерации счётчик будет увеличиваться на один. Итерации будут просчитываться пока i меньше пяти. Т.е., такой цикл будет работать и в нём пройдёт пять просчётов: 0, 1, 2, 3, 4 - именно такие значения будет принимать счётчик цикла i. Когда i станет равно пяти, цикл прервётся

Что у вас, посмотрим:

for (i=0;i>5;i++)

У вас счётчик i инициализирован нулём, но итерации цикла должны проходить до тех пор, пока i больше пяти. А он изначально не больше пяти. Поэтому цикл не запускается.

 
artmedia70:

Давайте разжуём строку

Пусть i будет изменяться от нуля до пяти. После каждой итерации счётчик будет увеличиваться на один. Итерации будут просчитываться пока i меньше пяти. Т.е., такой цикл будет работать и в нём пройдёт пять просчётов: 0, 1, 2, 3, 4 - именно такие значения будет принимать счётчик цикла i. Когда i станет равно пяти, цикл прервётся

Что у вас, посмотрим:

У вас счётчик i инициализирован нулём, но итерации цикла должны проходить до тех пор, пока i больше пяти. А он изначально не больше пяти. Поэтому цикл не запускается.



Точно! Спасибо! видать у меня глаз "замылился"
 
K-o-t:

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Господа программисты! Пожалуйста подскажите, как объединить советника с индикатором?

К примеру взят простой бот mo_bidir.mq4, который торгует своим алгоритмом, и мне нужно что бы он продолжал открывать сделки по своему алгоритму но после сигнала 3х МА -

Например по сигналу - Three Moving Averages:

FastEMA>MediumEMA>SlowEMA (тренд вверх) - бот покупает

FastEMA<MediumEMA<SlowEMA (тренд вниз) – бот продаёт

Inp_Signal_ThreeEMA_FastPeriod = 8;

Inp_Signal_ThreeEMA_MediumPeriod = 38;

Inp_Signal_ThreeEMA_SlowPeriod = 48;

Причем мне нужно чтобы советник продолжал торговать на пятиминутке, а индикатор подавал сигналы с дневного или 4х часового таймфрейма, ну и что бы можно было менять таймфреймы в настройках бота.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Я извиняюсь за повтор, но хотябы подскажите в какую ветку форума обратиться, или нужно создать новую тему?

Спасибо.


То что вы хотите сделать называется фильтрованием. Так что поищите по слову "фильтр", посмотрите на пару советников с фильтрацией, и, глядишь, сами сможете сделать то что вам нужно.
 
artmedia70:

Что-то я совсем уже загоняю... :) Задачка:

1. Есть открытая позиция объёмом 0.1 лота

2. Её ТейкПрофит равен 50 пунктов.

3. Рассчитываю её потенциальную прибыль по формуле PotentialProfit = Lots*TakeProfit*MarketInfo(Symbol(), MODE_TICKVALUE);

4. Из расчёта получаю потенциально-возможную прибыль 5.00 долларов (0.1*50*1.0) Замечательно.

Позиция уходит в минус и на каком-то рубеже открывается ещё одна усредняющая Бай, но с лотом 0.2

1. Рассчитываю безубыток для этих двух позиций. Функция уже давно используется по мере надобности и пока не замечал нареканий:

2. Замечательно. Подсчитали уровень безубытка, но... если на него поставить тейки этих двух позиций, то они закроются в ноль. Хорошо, думаю я. Теперь мне нужно к этому уровню БУ прибавить столько пунктов, сколько нужно, чтобы получилась общая прибыль, равная ранее подсчитанной - 5 долларов.

3. И вот тут у меня затыка в мозгу. Что я делаю: беру 5 долларов, делю на суммарный лот этих двух позиций (0.1+0.2=0.3), помноженный на TICK_VALUE

имею 5/(0.3*1.0) = 16.66666. Далее множу это на Point (0.00016) и прибавляю к цене безубытка.

4. Прекрасно. Тейки туда переносятся, но, как мне кажется, общая прибыль закрывающихся по этому уровню двух Баек не равна 5 долларов - она, мне кажется, меньше. Это видно из графика тестирования. На нём чётко прослеживается, что когда закрывается одна позиция, то прирост баланса намного больше, чем когда закрывается множество позиций по подсчитанному уровню общего тейка (эти места на графике видно по появлению на них линии эквити). График:


Где я ошибаюсь?

Я понимаю, что можно принтовать общую прибыль, но... мне хочется понять, где я могу ошибаться в расчётах, а не какую величину имеют переменные. Я их принтовал уже.

( 0.3 * 16 = 4.8 ) < ( 0.3 * 16.66666 = 5 )
Не знаю такую ли разницу вы имели ввиду, но из-за округления 16.6666 естественно профит будет меньше чем 5 долларов которые вы планировали получить.
 
artmedia70:

Что-то я совсем уже загоняю... :) Задачка:

1. Есть открытая позиция объёмом 0.1 лота

2. Её ТейкПрофит равен 50 пунктов.

3. Рассчитываю её потенциальную прибыль по формуле PotentialProfit = Lots*TakeProfit*MarketInfo(Symbol(), MODE_TICKVALUE);

4. Из расчёта получаю потенциально-возможную прибыль 5.00 долларов (0.1*50*1.0) Замечательно.

Позиция уходит в минус и на каком-то рубеже открывается ещё одна усредняющая Бай, но с лотом 0.2

1. Рассчитываю безубыток для этих двух позиций. Функция уже давно используется по мере надобности и пока не замечал нареканий:

2. Замечательно. Подсчитали уровень безубытка, но... если на него поставить тейки этих двух позиций, то они закроются в ноль. Хорошо, думаю я. Теперь мне нужно к этому уровню БУ прибавить столько пунктов, сколько нужно, чтобы получилась общая прибыль, равная ранее подсчитанной - 5 долларов.

3. И вот тут у меня затыка в мозгу. Что я делаю: беру 5 долларов, делю на суммарный лот этих двух позиций (0.1+0.2=0.3), помноженный на TICK_VALUE

имею 5/(0.3*1.0) = 16.66666. Далее множу это на Point (0.00016) и прибавляю к цене безубытка.

4. Прекрасно. Тейки туда переносятся, но, как мне кажется, общая прибыль закрывающихся по этому уровню двух Баек не равна 5 долларов - она, мне кажется, меньше. Это видно из графика тестирования. На нём чётко прослеживается, что когда закрывается одна позиция, то прирост баланса намного больше, чем когда закрывается множество позиций по подсчитанному уровню общего тейка (эти места на графике видно по появлению на них линии эквити). График:


Где я ошибаюсь?

Я понимаю, что можно принтовать общую прибыль, но... мне хочется понять, где я могу ошибаться в расчётах, а не какую величину имеют переменные. Я их принтовал уже.

не понимаю зачем все так усложнять
так не проще будет???

  double sumprofit=0;
  for (int i=0; i<OrdersTotal(); i++) 
      {
       if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
          {
           if ((OrderSymbol()==Symbol()) 
              {
               if (OrderType()==OP_BUY || OrderType()==OP_SELL) 
                  {
                    sumprofit+=OrderProfit()+OrderCommission()+OrderSwap();
                  }
             }
         }
      }
  if(sumprofit > 5) AllPosClose();//5 ----> суммарный профит позиций
 

или так

double sumprofit;
  for (int i=0; i<OrdersTotal(); i++) 
      {
       if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
          {
           if ((OrderSymbol()==Symbol()) 
              {
               if (OrderType()==OP_BUY || OrderType()==OP_SELL) 
                  {
                    sumprofit+=OrderProfit()+OrderCommission()+OrderSwap();
                  }
             }
         }
      }
  if(sumprofit > 5) AllPosClose();//5 ----> суммарный профит позиций
  if(sumprofit < -5) Dolivka();//  определенным лотом Sell или Buy
 
подскажите, мне не программисту- где в терминале присутствуют скаченные индикаторы (как их увидеть и запустить). ??? скачала, вроде туда установила, а в самом терминале их обнаружить не могу??
 
fox6900:
подскажите, мне не программисту- где в терминале присутствуют скаченные индикаторы (как их увидеть и запустить). ??? скачала, вроде туда установила, а в самом терминале их обнаружить не могу??

И как же ты их туда установила? Расскажи как нам... авось и подскажем..
 
С dll можно читать AccountNumber() и как? Намекните хотя бы куда копать. Я имею ввиду без передачи значения функции в dll, то есть с самой динамической библиотеки.