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

 
YanSay:
   

Пытаюсь это сделать с помощью ShellExecuteW() следующим образом:

гляньте здесь:

https://www.mql5.com/ru/forum/160683/page1243#comment_18095301

может надо отдельно указать программу для исполнения и файл?
 
leonerd:


А такая ситуация из-за чего? Одинаковый индекс баров. Причем, вроде как, происходит только при первом запуске на символе. Либо глубже в истории. Я думал выше в коде как раз проверка на наличие баров..

Одинаковые значения означают вертикальную линию или точку.
Код писал как пример для демонстрации без претензии на чистовой вариант .
 
Aleksei Stepanenko:

гляньте здесь:

https://www.mql5.com/ru/forum/160683/page1243#comment_18095301

может надо отдельно указать программу для исполнения и файл?

Супер, сработало, благодарю!

Теперь остается встроить в код проверку на исполнение, чтобы точно не продолжать код, пока не выполнится скрипт, подскажите, как это реализовать?

Уверен есть более надежный и правильный способ, чем Sleep().

#import "shell32.dll"
int ShellExecuteW(int hWnd, string lpVerb, string lpFile, string lpParameters, string lpDirectory, int nCmdShow);
#import
#define SW_SHOW 5
#define SW_SHOWNORMAL 1

void OnStart()
{
   ShellExecuteW(NULL,"Open","python.exe","C:\\Users\\yansa\\Desktop\\test_script.py",NULL,SW_SHOW); 
   Sleep(10000);
   //Code continues
}
 

Подскажите как можно при условии if заставить советника вернуться к OnInit()

 if(buy_lots>0||sell_lots>0)
  { Go to OnInit();}
 
MakarFX:

Подскажите как можно при условии if заставить советника вернуться к OnInit()

обернуть код который используете в OnInit() в отдельную функцию и вызывать эту функцию из OnInit() и при необходимости из Вашего if()

 
YanSay:

Супер, сработало, благодарю!

Теперь остается встроить в код проверку на исполнение, чтобы точно не продолжать код, пока не выполнится скрипт, подскажите, как это реализовать?

Уверен есть более надежный и правильный способ, чем Sleep().

тоже по экспериментировал - открыл камеру, а закрыть не возможно - пока процесс не убил.

//+------------------------------------------------------------------+
//|                                                            1.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#import "shell32.dll"
int ShellExecuteW(int hWnd, string lpVerb, string lpFile, string lpParameters, string lpDirectory, int nCmdShow);
#import
#define SW_SHOW 5
#define SW_SHOWNORMAL 1
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   ShellExecuteW(NULL,"Open","C:\\Program Files (x86)\\Lenovo\\YouCam\\YouCam.exe","",NULL,SW_SHOW); 
  }
//+------------------------------------------------------------------+


 

 
Igor Makanu:

обернуть код который используете в OnInit() в отдельную функцию и вызывать эту функцию из OnInit() и при необходимости из Вашего if()

Я Вас понял. А попроще ничего нет, типа ExpertReload..Restart?
 
MakarFX:
Я Вас понял. А попроще ничего нет, типа ExpertReload..Restart?

нет

в MQLсобытийная модель, которая подразумевает, что вызов функций OnInit , OnTick ... производит только терминал

если хотите сложное решение... ну переключите ТФ из советника - вызовете OnInit , сомневаюсь что это Вы искали ;)

 
MakarFX:
Я Вас понял. А попроще ничего нет, типа ExpertReload..Restart?

ретурн из онтик

 
Igor Makanu:

нет

в MQLсобытийная модель, которая подразумевает, что вызов функций OnInit , OnTick ... производит только терминал

если хотите сложное решение... ну переключите ТФ из советника - вызовете OnInit , сомневаюсь что это Вы искали ;)

Спасибо, понял.
Причина обращения: