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

 

Всем привет! Помогите найти ошибку в коде. Смысл в следующем: всего открыто, скажем 6 из них 4 в сел, 2  в бай (согласно скрину). Закрытие происходит при достижении суммарного профита,с кажем в 1.0 (согласно скрину). 2 Х 2 = 4 залокированные (они закрываются с помощью OrderCloseBy),  а 2 селки закрываются с помощью OrderClose. 

Ошибка в следующем - перекрытые ордера закрываются с помощью OrderCloseBy, а вот оставшиеся ордера не закрываются вовсе

Чтобы не копаться в коде, думаю, ошибка где то здесь.

строка 565 кода - функция закрытия ордеров сначала разнонаправленных

строка 92-100 кода - закрытие всех остальных ордеров

строка 550 кода - функция подсчета открытых ордеров

Буду благодарен за любую помощь.


Файлы:
 

alexey1979621, на mql5 ответил ;)

 
Shurkin:

Здравствуйте.

При расстановке мозаикой (терминал МТ-4-670, Alt+R) окна графиков каждый раз размещаются по новым местам. 

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


МТ-4-670, у меня все нормуль

Графики пар всегда располагаются (при мозайке) так, как они расположены внизу на вкладках

По очередности:

|  1  |  3  |  5  |

|  2  |  4  |  6  |

 
GalaX:

МТ-4-670, у меня все нормуль

Графики пар всегда располагаются (при мозайке) так, как они расположены внизу на вкладках

По очередности:

|  1  |  3  |  5  |

|  2  |  4  |  6  |


А у меня всегда первым становится окно, которое было на весь экран до этого, поменял активное окно - меняется и порядок мозаики
 
GalaX:

МТ-4-670, у меня все нормуль

Графики пар всегда располагаются (при мозайке) так, как они расположены внизу на вкладках

По очередности:

|  1  |  3  |  5  |

|  2  |  4  |  6  |


Это свойство появляется при включении панели переключения графиков, при выключении исчезает и первым размещается активное окно.

В последней версии справки об этом ничего не нашёл.

 
alexey1979621:

Всем привет! Помогите найти ошибку в коде. Смысл в следующем: всегооткрыто, скажем 6 из них 4 в сел, 2  в бай (согласно скрину). Закрытиепроисходит при достижении суммарного профита,с кажем в 1.0 (согласноскрину). 2 Х 2 = 4 залокированные (они закрываются с помощьюOrderCloseBy),  а 2 селки закрываются с помощью OrderClose. 

Ошибка в следующем - перекрытые ордера закрываются с помощью OrderCloseBy, а вот оставшиеся ордера не закрываются вовсе

Чтобы не копаться в коде, думаю, ошибка где то здесь.

строка 565 кода - функция закрытия ордеров сначала разнонаправленных

строка 92-100 кода - закрытие всех остальных ордеров

строка 550 кода - функция подсчета открытых ордеров

Буду благодарен за любую помощь.


"строка 92-100 кода - закрытие всех остальных ордеров" - указана неверная цена закрытия ордеров.

Во всех циклах с перебором ордеров нужно поменять направление перебора ордеров, например, так

 for(t = OrdersTotal() - 1; t >= 0; t--)

 А в ClosePos(), вообще, после перекрестного закрытия количество ордеров здорово меняется. Там ошибок должно возникать немеряно.

 

Програмный доступ к алертам - тем, которые красной стрелочкой рисуются в правой стороне и шлют куда надо сообщения при пересечении ценой нужного уровня, существует???????

Ayyyyyy 

 

Помогите плиз!!! Третий день голову ломаю!!!!

int stohastm1()

{


double z=iLowest(Symbol(),PERIOD_M1,MODE_LOW,m5,0);                  //возвращаем индекс бара за n-периодов с min ценой

double x=iHighest(Symbol(),PERIOD_M1,MODE_HIGH,m5,0);                //возвращаем индекс бара за n-периодов с max ценой

double MinLOWPeriod=iLow(Symbol(),PERIOD_M1,z);                    //возвращаем значение цены бара с наименьшей ценой

double MaxHIGHPeriod=iHigh(Symbol(),PERIOD_M1,x);                  //возвращаем значение цены бара с наибольшей ценой

double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0);                 //возвращаем значение цены закрытия последнего бара 

double i=100*((PriceCloseBar*10000)-(MinLOWPeriod*10000));

double r=100*((MaxHIGHPeriod*10000)-(MinLOWPeriod*10000)); 

double Km1=(i/r);                                                                   


return(Km1); 

В режиме реального времени скрипт работает!! в тестере стратегий ОШИБКА! ДЕЛЮ ГОВОРИТ НА НОЛЬ!!! Формула простейшая но без деления тут никак. (формула стохастика). Как видно в коде я и значения умножил на 10000 чтобы вообще ноли исключить! все равно ошибка! ПОМОГИТЕ!!!  

 
sponger:

Помогите плиз!!! Третий день голову ломаю!!!!

int stohastm1()

{


double z=iLowest(Symbol(),PERIOD_M1,MODE_LOW,m5,0);                  //возвращаем индекс бара за n-периодов с min ценой

double x=iHighest(Symbol(),PERIOD_M1,MODE_HIGH,m5,0);                //возвращаем индекс бара за n-периодов с max ценой

double MinLOWPeriod=iLow(Symbol(),PERIOD_M1,z);                    //возвращаем значение цены бара с наименьшей ценой

double MaxHIGHPeriod=iHigh(Symbol(),PERIOD_M1,x);                  //возвращаем значение цены бара с наибольшей ценой

double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0);                 //возвращаем значение цены закрытия последнего бара 

double i=100*((PriceCloseBar*10000)-(MinLOWPeriod*10000));

double r=100*((MaxHIGHPeriod*10000)-(MinLOWPeriod*10000)); 

double Km1=(i/r);                                                                   


return(Km1); 

В режиме реального времени скрипт работает!! в тестере стратегий ОШИБКА! ДЕЛЮ ГОВОРИТ НА НОЛЬ!!! Формула простейшая но без деления тут никак. (формула стохастика). Как видно в коде я и значения умножил на 10000 чтобы вообще ноли исключить! все равно ошибка! ПОМОГИТЕ!!!  

А это не деление? double Km1=(i/r);   
 

borilunad:
А это не деление? double Km1=(i/r);   

оно самое!!! Но оно нужно!!! формула стохастика- %K = 100%·((Закр - Минn)/(Максn - Минn))

  • Закр — цена текущего закрытия
  • Минn — минимальный минимум за период n
  • Максn — максимальный максимум за период n
  • подскажите как мне реализовать сие без деления?