Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1890

 
Tretyakov Rostyslav #:

Это значит если нет ордеров

Ну да или просадка ниже определенного уровня . Но насколько я понимаю  обнуление здесь не причем если нет обнуления то происходит бесконечное закрытие ордеров а мой случай наоборот один ордер не закрывается

 
EVGENII SHELIPOV #:

Ну да или просадка ниже определенного уровня . Но насколько я понимаю  обнуление здесь не причем если нет обнуления то происходит бесконечное закрытие ордеров а мой случай наоборот один ордер не закрывается

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

if(CalculiteProfitMinMaxPenultimateOrders() >= 0 && OrderGroupCloseSignal()==0 &&
                  Drawdown >= DrawdownClosingMinMaxOrders && FindPenultimateProfit() > 0)

а значит дальше, к функции закрытия, дело не доходит

 
Tretyakov Rostyslav #:

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

а значит дальше, к функции закрытия, дело не доходит

Как Вы считаете это условие есть в команде на закрытие ордеров и  в функции закрытия ордеров если я уберу это условие из функции закрытия ордеров это изменит что то

 
EVGENII SHELIPOV #:

Как Вы считаете это условие есть в команде на закрытие ордеров и  в функции закрытия ордеров если я уберу это условие из функции закрытия ордеров это изменит что то

Это ускорит работу...зачем дважды одно и тоже проверять.

Кстати, ты выложил две разных функции

ClosseMinMaxPenultimateOrdersZero()

и

ClosseMinMaxPenultimateOrders()
Это так задумано?
 
Tretyakov Rostyslav #:

Это ускорит работу...зачем дважды одно и тоже проверять.

Кстати, ты выложил две разных функции

и

Это так задумано?

Я сейчас проверил без этого условия советник закрывает косячно так что без него ни как

 
Vitaly Muzichenko #:

Прошу помощи!

Получаю совсем не то, что ожидаю. Нужно прочесть лог-файл

Стоило начать отсюда:

#include <WinAPI\\fileapi.mqh>
 
EVGENII SHELIPOV #:

Я сейчас проверил без этого условия советник закрывает косячно так что без него ни как

Значит они не одинаковые

               if(CalculiteProfitMinMaxPenultimateOrders() >= 0 && OrderGroupCloseSignal()==0 &&
                  Drawdown >= DrawdownClosingMinMaxOrders && FindPenultimateProfit() > 0)
               if(CalculiteProfitMinMaxPenultimateOrders() >= 0 && OrderGroupCloseSignal()==1 &&
                  Drawdown >= DrawdownClosingMinMaxOrders && FindPenultimateProfit() > 0)
 
Иван #:
Дорогие спецы! Имеем код:

int Handle = FileOpen("2022.02.01 12-00",FILE_ANSI|FILE_WRITE|FILE_COMMON,'-');     //открыли для записи
FileWrite(Handle,"1","643","USDCAD","[11-1.30-0.70]");                                                   //записали набор данных
FileSeek(Handle,0,SEEK_SET);                                                                                         //переставили указатель в начало файла (это, думаю, излишне, но всё же)
FileClose(Handle);                                                                                                           //закрыли файл
Handle = FileOpen("2022.02.01 12-00",FILE_ANSI|FILE_SHARE_READ|FILE_COMMON,'-');//открыли для чтения
Print(FileTell(Handle)," ",FileReadNumber(Handle)," ",FileReadNumber(Handle));
FileClose(Handle);                                                                                                           //закрыли файл

Запись в журнале должна содержать в себе текущую позицию указателя, пробел, первое считанное значение из файла (1), пробел, второе считанное значение из файла (643). Вместо этого в журнал выдаётся следующее:

6 643.0 1.0

То есть файловый указатель по непостижимой мною причине стоит не на начале файла, а в шести байтах от него, на втором разделителе ("-"), а последующее чтение происходит справа налево. Попытки переставить указатель в начало файла при помощи функции FileSeek успеха не принесли.
Моего интеллекта для осознания причины происходящего недостаточно. Прошу пояснить, что это за дичь.

Ну что? Никто не подскажет?

 

Друзья, прошу помощи.

Есть написанный мной мультивалютный советник на mql4. В тестере разумеется не работает. Решил что нужно переходить на mql5.

Все адаптировал все ошибки компилятора поправил. КРОМЕ использования технических индикаторов. Голова кипит не могу понять. В документации непонятная фигня на две страницы. Может я куда не туда смотрю.

Одна строка кода в mql4 типа 

 double MA1EURGBP_TF = iMA("EURGBP",15,MA1_Period,0,MODE_EMA,PRICE_OPEN,0);

или 

double Stoch_M_GBPUSD=iStochastic("GBPUSD", Stoch_Period, K_Period, D_Period, Slowing, MODE_EMA, 0, MODE_MAIN, 0);

судя по документации меняется целой страницей кода в mql5. Хендлы, буфера, массивы с параметрами, это в инит, это в калькулейт, обработка ошибок при создании хендла... дичь какая-то... может я чет не туда смотрю куда???

А если я использую несколько пар и несколько таймфреймов, так вообще там получается "Война и Мир".

 
Sergey Dymov #:

Друзья, прошу помощи.

Есть написанный мной мультивалютный советник на mql4. В тестере разумеется не работает. Решил что нужно переходить на mql5.

Все адаптировал все ошибки компилятора поправил. КРОМЕ использования технических индикаторов. Голова кипит не могу понять. В документации непонятная фигня на две страницы. Может я куда не туда смотрю.

Одна строка кода в mql4 типа 

 double MA1EURGBP_TF = iMA("EURGBP",15,MA1_Period,0,MODE_EMA,PRICE_OPEN,0);

или 

double Stoch_M_GBPUSD=iStochastic("GBPUSD", Stoch_Period, K_Period, D_Period, Slowing, MODE_EMA, 0, MODE_MAIN, 0);

судя по документации меняется целой страницей кода в mql5. Хендлы, буфера, массивы с параметрами, это в инит, это в калькулейт, обработка ошибок при создании хендла... дичь какая-то... может я чет не туда смотрю куда???

А если я использую несколько пар и несколько таймфреймов, так вообще там получается "Война и Мир".

int handleSQ=-1;
double BufferSQ[1];
int OnInit()
{

  handleSQ=iCustom(Symbol(),PERIOD_CURRENT,"squares",Period1,Period2,Period3,Dev_Step_1,Dev_Step_2,Dev_Step_3);
  if(handleSQ<0) {
    return(INIT_FAILED);
    Print("handleSQ = ",handleSQ,"  error = ",GetLastError());
  }
//---
  return(INIT_SUCCEEDED);
}

void OnTick()
{

    int copy=CopyBuffer(handleSQ,0,1,1,BufferSQ);
    if(copy<0) Print("Неудачная попытка копирования Squares");
    u1=BufferSQ[0];//iCustom(Symbol(),PERIOD_CURRENT,"squares_v2",Period1,Period2,Period3,Dev_Step_1,Dev_Step_2,Dev_Step_3,i);
Причина обращения: