[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 515

 
edyuson:

я ни стрвниваю, эт не моя головоломка. просто нашел похожий алгоритм, который мне надо и пытаюсь доделать, чеп совсем как мне надо. https://www.mql5.com/ru/code/9927 Че убрал, че оставил.

мне это охота 0.01,0.01,0,01; 0.02,0.02,0.02; 0.04,0.04,0.04; 0.08,0.08,0,08......

некоторые это делают через массив
 
YOUNGA:
некоторые это делают через массив


примерно так:

double mas[3];
int q;
int w;

for (int z=OrdersHistoryTotal()-1; z>0; z--)
{
 OrderSelect(z, SELECT_BY_POS, MODE_HISTORY);
 if (OrderSymbol()==Symbol())
 {
  if (OrderProfit()>0 || q>=3) break;
  if (OrderProfit()<0)
  {
  mas[q]=OrderLots();
  q++;
  }
 }
}
if (mas[0]<0 && mas[1]<0 && mas[2]<0) w=1; //Ваше условие
 

Привет!

Люди, посоветуйте как при старте индюка проверить доступность валютной пары?

Я уже забодался бороться c этим эм-ку-эль.

Вот такой код:

[CODE]

extern string CurrencyPair = "";
string gsSymbol, gsIndiName;

bool bIndicatorError;

...

int start() {

if (StringLen(CurrencyPair) == 0)
gsSymbol = Symbol();

else

gsSymbol = CurrencyPair;

Comment(MarketInfo(gsSymbol, MODE_TRADEALLOWED)); // ЗАКОВЫКА ЗДЕСЬ, это чудо всегда возвращает 0.0000000 при старте терминала. Если же потом открыть свойства индикатора и даже ничего не поправлять в параметрах, то возвращает 1.000000

if (!MarketInfo(gsSymbol, MODE_TRADEALLOWED)) {
Alert(gsIndiName, ": Trade is not allowed for symbol [", gsSymbol,"]");
bIndicatorError = true;
return(-1);
}

}

[CODE]

Может есть способ попроще и понадёжнее.

Вообще же не понимаю, как можно писать программы на языке, в которых базовые функции то работают, то не работают.

 
Подскажите можно ли сделать скрипт с настраиваемыми параметрами? Мне кажется что я где то всречал скрипт который при запуске предлагает ввести парамерты.
 
sss2019:
Подскажите можно ли сделать скрипт с настраиваемыми параметрами? Мне кажется что я где то всречал скрипт который при запуске предлагает ввести парамерты.
сделайте в скрипте внешние параметры extern
 
artmedia70:
сделайте в скрипте внешние параметры extern


Я сделал параметры

extern string StartTime = "2011.01.01";
extern string EndTime = "2011.01.25";

но почему то скрипт не выводит их настройки перед исполнением

 
Dobr:


примерно так:

double mas[3];
int q;
int w;

for (int z=OrdersHistoryTotal()-1; z>0; z--)
{
 OrderSelect(z, SELECT_BY_POS, MODE_HISTORY);
 if (OrderSymbol()==Symbol())
 {
  if (OrderProfit()>0 || q>=3) break;
  if (OrderProfit()<0)
  {
  mas[q]=OrderLots();
  q++;
  }
 }
}
if (mas[0]<0 && mas[1]<0 && mas[2]<0) w=1; //Ваше условие
чет пока только так: 0.01, 0.02, 0,04, 0.08, 0.16... мне это надо 0.01,0.01,0,01; 0.02,0.02,0.02; 0.04,0.04,0.04; 0.08,0.08,0,08......
 
sss2019:


Я сделал параметры

но почему то скрипт не выводит их настройки перед исполнением

https://docs.mql4.com/ru/basis/preprosessor/compilation
 
edyuson:
чет пока только так: 0.01, 0.02, 0,04, 0.08, 0.16... мне это надо 0.01,0.01,0,01; 0.02,0.02,0.02; 0.04,0.04,0.04; 0.08,0.08,0,08......


ну я ж написал ПРИМЕРНО... ;)

вот более точный вариант:

double mas[3]={0,0,0};
int q=0;
int w=0;
int z=0;
for (z=OrdersHistoryTotal()-1;z>0; z--)
{
 OrderSelect(z, SELECT_BY_POS, MODE_HISTORY);
 if (OrderSymbol()==Symbol())
 {
  if (OrderProfit()>0 || q==3) break;
  if (OrderProfit()<0)
  {
  mas[q]=OrderLots();
  q++;
  }
 }
}
if (mas[0]==lot && mas[1]==lot && mas[2]==lot) w=1;
if (w==1) lot=OrderLots()*2;
 
ForexTader:


Вообще же не понимаю, как можно писать программы на языке, в которых базовые функции то работают, то не работают.


Можно попробовать перевести часть проверок из init в start. там уж точно все подгрузилось. Еще можно проверять состояние терминала, ну и так далее.
Причина обращения: