Как кодировать? - страница 336

 
tkuan77:
Привет, mladen, к сожалению, я только что повторил это снова, и он все еще не работает.

Есть ли другой способ, с помощью которого я могу закрыть свою сделку, основываясь на определенном времени?

С уважением,

Райан

Я использовал этот код:

extern bool UseCurrSymbol = false;

int init() { return(0); }

int deinit() { return(0); }

void start(void)

{

bool result;

if(OrdersTotal()>0)

{

if (TimeCurrent()>= StrToTime("07:00:00"))

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if (!UseCurrSymbol || OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUY)

{

double pBid=MarketInfo(OrderSymbol(),MODE_BID);

result = OrderClose(OrderTicket(),OrderLots(),pBid,3,Blue);

}

if (OrderType()==OP_SELL)

{

double pAsk=MarketInfo(OrderSymbol(),MODE_ASK);

result = OrderClose(OrderTicket(),OrderLots(),pAsk,3,Red);

}

}

}

}

return;

}

Для тестирования, и он закрыл ордер (см. пример).

Файлы:
test_closed.gif  63 kb
 
mladen:
Я использовал этот код:
extern bool UseCurrSymbol = false;

int init() { return(0); }

int deinit() { return(0); }

void start(void)

{

bool result;

if(OrdersTotal()>0)

{

if (TimeCurrent()>= StrToTime("07:00:00"))

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if (!UseCurrSymbol || OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUY)

{

double pBid=MarketInfo(OrderSymbol(),MODE_BID);

result = OrderClose(OrderTicket(),OrderLots(),pBid,3,Blue);

}

if (OrderType()==OP_SELL)

{

double pAsk=MarketInfo(OrderSymbol(),MODE_ASK);

result = OrderClose(OrderTicket(),OrderLots(),pAsk,3,Red);

}

}

}

}

return;

}

Для проверки, и он закрыл ордер (см. пример).

Привет, mladen, спасибо. проблема была решена с моей стороны. просто побочное замечание, не могли бы вы немного объяснить мне, какова цель этих нескольких строк в вашей кодировке?

extern bool UseCurrSymbol = false; and

if (!UseCurrSymbol || OrderSymbol()==Symbol())

С уважением,

Райан

 
tkuan77:
Привет, mladen, спасибо. проблема была решена с моей стороны. просто побочное замечание, не могли бы вы немного объяснить мне, какова цель этих нескольких строк в вашем коде?

extern bool UseCurrSymbol = false; и

if (!UseCurrSymbol || OrderSymbol()==Symbol())

С уважением,

Райан

Вы использовали переменную UseCurrSymbol и именно эту строку в коде.

Мне пришлось сделать эту переменную так, чтобы код использовал те же переменные, что и ваш код.

 
mladen:
Вы использовали переменную UseCurrSymbol и именно эту строку в вашем коде я должен был сделать переменной, чтобы код использовал те же переменные, что и ваш код

Привет, mladen, извините, так как я взял эту часть кода из источников, которые вы мне предоставили ранее.

Я имел в виду, зачем нам нужно устанавливать bool UseCurrSymbol в false и для чего нужна вторая строка --> if (!UseCurrSymbol || OrderSymbol()==Symbol()).

 
tkuan77:
Привет, mladen, извините, так как я взял эту часть кода из источников, которые вы мне предоставили ранее. Я имел в виду, почему нам нужно установить bool UseCurrSymbol в false и какова цель второй строки для --> if (!UseCurrSymbol || OrderSymbol()==Symbol())

Нам не нужно устанавливать значение false

Если вы установите значение true, то только текущий символ будет проверяться на наличие ордеров. Таким образом, это позволяет вам выбирать, какие ордера вы хотите обрабатывать.

 

Привет, ребята!

У меня следующая проблема.

Я хочу значение icustom indi, например, iCustom(NULL,0, "MACD",12,26,9,0,i) использовать в подфункции, например:

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

получить импульс "iCustom(NULL,0, "MACD",12,26,9,0,i)"...

Когда я вызываю ее обычным образом с Mom(High,22,Bars,i)

это работает, но когда я использую пользовательский инди вместо "High", это, конечно, не работает.

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

Спасибо за любую помощь!

Пока, AT

 
at120:
Привет ребята!

У меня следующая проблема.

Я хочу значение icustom indi, например, iCustom(NULL,0, "MACD",12,26,9,0,i) использовать в подфункции, например:

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

получить импульс "iCustom(NULL,0, "MACD",12,26,9,0,i)"...

Когда я вызываю ее обычным образом с Mom(High,22,Bars,i)

это работает, но когда я использую пользовательский инди вместо "High", это, конечно, не работает.

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

Спасибо за любую помощь!

Пока, АТ

at120

Есть ли у вас вообще в папке indicators индикатор с именем "macd" (я имею в виду не встроенный macd, а какой-то пользовательский)? Если да, проверьте правильность параметров

 

Привет, Младен!

Спасибо за быстрое воспроизведение!

Извините, MACD был плохим примером, возьмите любой другой MACD или что-то подобное.

Я проверил вывод через дополнительное окно и test indi /output, чтобы установить правильные настройки,

чтобы убедиться, что "iCustom(NULL,0, "myIndi",0,i)" имеет правильные параметры. Конечно, он скомпилирован, в правильной папке и т.д...

Я всегда получаю ошибку (когда использую переменную) - напр.

double mom1 = iCustom(NULL,0, "myIndi",0,i); -> mom(mom1,Bars,20,i)

-> "mom" - параметр разговор не разрешен или когда я использую его напрямую ->

mom( iCustom(NULL,0, "myIndi",0,i),Bars,20,i)

Ошибка: iCustom - параметр передан как ссылка, ожидается переменная

Спасибо за помощь и информацию!

Пока, AT

 
at120:
Привет Младен!

Спасибо за быстрое воспроизведение!

Извините, MACD был плохим примером, возьмите любой другой MACD или что-то подобное.

Я проверил вывод через дополнительное окно и test indi /output, чтобы установить правильные настройки,

чтобы убедиться, что "iCustom(NULL,0, "myIndi",0,i)" имеет правильные параметры. Конечно, он скомпилирован, в правильной папке и т.д...

Я всегда получаю ошибку (когда использую переменную) - напр.

double mom1 = iCustom(NULL,0, "myIndi",0,i);-> mom(mom1,Bars,20,i)

-> "mom" - параметр разговор не разрешен или когда я использую его напрямую ->

mom( iCustom(NULL,0, "myIndi",0,i),Bars,20,i)

Ошибка: iCustom - параметр передан как ссылка, ожидается переменная

Спасибо за помощь и информацию!

Пока, АТ

Если вы используете простой вызов iCustom(), то ошибка может возникнуть только в параметрах.

Вы не можете использовать iCustom() в качестве параметра для функции mom() (проверьте заголовок функции mom и вы увидите, какие параметры и какого типа принимает функция mom()). Результат iCustom() определяется как "double" - он не может принимать массив, переданный по ссылке. Посмотрите также эту тему: https: //www.mql5.com/en/forum/173108 - возможно, это поможет.

 

Привет, Младен!

Я думаю, что вызов моего iCustom правильный, потому что в тестовом и обычном режиме(экспорт данных или использование как indi)

он работает нормально до сих пор. Я думаю, что проблема в том, что вы упомянули значение double/array.

Когда я сейчас использую

double mom1[];

mom1 = iCustom(NULL,0, "myIndi",0,i);

и чем -> mom(mom1,Bars,20,i);

-> "mom" - параметр conversation not allowed

Как мне правильно это написать?

Большое спасибо и до свидания, AT