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

 

У меня были покупки и продажи.

panteraschoice:
Это бэктестинг, он дал покупки и продажи или только одну из них? У меня были только покупки (или только продажи, когда я изменил код). Я действительно не видел ничего, что показывало бы ошибку.
 

этот RSIFilter_v1... я не знаю об этом...

код, который вы показываете здесь, должен сделать это...

Вот что я сделал... см. вложения.

panteraschoice:
Так это нормально?

double Sg=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1);

if ( Sg>0) Order = SIGNAL_BUY;

if (Sg<0) Order = SIGNAL_SELL;
 
IN10TION:
Качество моделирования должно быть 90%, не знаю, почему оно не отображается.

Я думаю, что это связано с несовпадением ошибок. Backtester с нескольких релизов имеет эту проблему. Слышал, что это из-за плохих данных.

FerruFx

 

ошибка сопоставления булевых переменных

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

вот фрагмент кода

double

BuyCondition,

SellCondition,

StopLong,

StopSell;

индикаторы

двойной индикатор1,

индикатор2

индикатор 3; (но это int)

поэтому мне нужны эти условия

StopLong = ((SellValueCurrent !=0 && SellValueCurrent2 !=0) || (TrendEnvDown != EMPTY_VALUE));

StopSell = ((BuyValueCurrent !=0 && BuyValueCurrent2 !=0) || (TrendEnvUp != EMPTY_VALUE));

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

p.s. sellvalue и buyvalue - двойные.

 

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

если хотите, опубликуйте свой mq4

payback:
Привет всем, у меня такая ошибка и я не понимаю, как разобраться, я думаю, что это проблема соответствия различных типов переменных.

вот фрагмент кода

double

BuyCondition,

SellCondition,

StopLong,

StopSell;

индикаторы

двойной индикатор1,

индикатор2

индикатор 3; (но это int)

поэтому мне нужны эти условия

StopLong = ((SellValueCurrent !=0 && SellValueCurrent2 !=0) || (TrendEnvDown != EMPTY_VALUE));

StopSell = ((BuyValueCurrent !=0 && BuyValueCurrent2 !=0) || (TrendEnvUp != EMPTY_VALUE));

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

p.s. sellvalue и buyvalue удваиваются
 
panteraschoice:
Что-то пошло не так. Демо-счет был полностью стерт.

Вот небольшая часть из журнала эксперта, с сотнями этих "invalid price for OrderClose function" :

GBPJPY на 209.23 sl: 212.23 tp: 208.23 ok

10:00:04 2730_BasketVentilatorVoorProg_2 GBPCHF,H1: invalid price 2.02750000

для функции OrderClose

10:00:04 2730_BasketVentilatorVoorProg_2 EURUSD,H1: недопустимая цена 1.55750000

для функции OrderClose

10:00:04 2730_BasketVentilatorVoorProg_2 GBPCHF,H1: close #11685361 sell

0.10 GBPCHF по цене 2.0270 sl: 2.0570 tp: 2.0170 по цене 2.0275

10:00:05 2730_BasketVentilatorVoorProg_2 USDCHF,H1: недействительная цена 1.03350000

для функции OrderClose

10:00:05 2730_BasketVentilatorVoorProg_2 EURUSD,H1: недопустимая цена 1.55740000

для функции OrderClose

это часть в ea для OrderClose,

Я не понимаю, что в ней не так, может кто-то может помочь?

//---------------------

int l_ord_total_72 = OrdersTotal();

for (int l_pos_76 = 0; l_pos_76 < l_ord_total_72; l_pos_76++) {

if (OrderSelect(l_pos_76, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol() == Symbol()) {

l_cmd_80 = OrderType();

if (l_cmd_80 == OP_BUY) {

l_count_56++;

if (l_isar_48 > Close[0]) OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet);

}

if (l_cmd_80 == OP_SELL) {

l_count_60++;

if (l_isar_48 < Close[0]) OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet);

}

}

}

}

//--------------------

Возможно, вы получили новые цены от брокера, попробуйте использовать функцию RefreshRates перед OrderClose, если вы получите ошибку.

 

Ошибка OrderClose

Что-то пошло не так. Демо-счет был полностью уничтожен.

Вот небольшая часть из журнала эксперта, с сотнями этих "invalid price for OrderClose function" :

GBPJPY на 209.23 sl: 212.23 tp: 208.23 ok

10:00:04 2730_BasketVentilatorVoorProg_2 GBPCHF,H1: invalid price 2.02750000

для функции OrderClose

10:00:04 2730_BasketVentilatorVoorProg_2 EURUSD,H1: недопустимая цена 1.55750000

для функции OrderClose

10:00:04 2730_BasketVentilatorVoorProg_2 GBPCHF,H1: close #11685361 sell

0.10 GBPCHF по цене 2.0270 sl: 2.0570 tp: 2.0170 по цене 2.0275

10:00:05 2730_BasketVentilatorVoorProg_2 USDCHF,H1: недействительная цена 1.03350000

для функции OrderClose

10:00:05 2730_BasketVentilatorVoorProg_2 EURUSD,H1: недопустимая цена 1.55740000

для функции OrderClose

это часть в ea для OrderClose,

Я не понимаю, что в ней не так, может кто-то может помочь?

//---------------------

int l_ord_total_72 = OrdersTotal();

for (int l_pos_76 = 0; l_pos_76 < l_ord_total_72; l_pos_76++) {

if (OrderSelect(l_pos_76, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol() == Symbol()) {

l_cmd_80 = OrderType();

if (l_cmd_80 == OP_BUY) {

l_count_56++;

if (l_isar_48 > Close[0]) OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet);

}

if (l_cmd_80 == OP_SELL) {

l_count_60++;

if (l_isar_48 < Close[0]) OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet);

}

}

}

}

//--------------------

Компиляция не дает ошибки.

 
IN10TION:
нужно больше кода, чтобы исправить это... если хотите, опубликуйте свой mq4

нет, я не хочу публиковать все, но я думаю, что это проблема с соответствием типов переменных, я попытаюсь объяснить больше

индикатор1 и 2 являются двойными правильно

поэтому у меня есть buyvaluecurrent = icustom(indicator1 etc etc);

buyvaluecurrent2 = icustom(indicator2 etc etc);

sellvaluecurrent = icustom(indicator1 etc etc); //удваивается правильно?

trenendvup = icustom(indicator3 etc etc) ; //int

и так далее

buycondition= ((buyvaluecurrent !=0 && buyvaluecurrent2 !=0) && (trendenvup != Empty_Value);

это утверждение работает только иногда и также может быть проблемой, поэтому мой вопрос - почему? Я хочу, чтобы buycondition возвращало 1 или 0, независимо от типа bool или double.

 
Kalenzo:
Возможно вы получили новые цены от брокера, попробуйте использовать функцию RefreshRates перед OrderClose, если вы получите ошибку.

Да, спасибо!

 

в зависимости от того, что посылают индикаторы iCustom...

double buyvaluecurrent = iCustom(indicator1);

double buyvaluecurrent2 = iCustom(indicator2);

double sellvaluecurrent = iCustom(indicator1);

int trenendvup = iCustom(indicator3);

итак...

if((buyvaluecurrent !=0 && buyvaluecurrent2 !=0) && (trendenvup !=0)) {buycondition=0;}

if((buyvaluecurrent !=0 && buyvaluecurrent2 !=0) && (trendenvup !=1)) {buycondition=1;}

вы не можете получить bool в вашем buycondition, только используя "&&" и некоторые условия, используйте функцию if()...

надеюсь это поможет, в противном случае это маленький шаг вперед.

payback:
нет, я не хочу публиковать все, но я думаю, что это проблема с соответствием типов переменных, я постараюсь объяснить больше.

индикаторы 1 и 2 двойные

Итак, у меня buyvaluecurrent = icustom(indicator1 etc etc);

buyvaluecurrent2 = icustom(indicator2 etc etc);

sellvaluecurrent = icustom(indicator1 etc etc); //двойные правильно?

trenendvup = icustom(indicator3 etc etc) ; //int

и так далее

buycondition= ((buyvaluecurrent !=0 && buyvaluecurrent2 !=0) && (trendenvup != Empty_Value);

Это утверждение работает только иногда и также может быть проблемой, поэтому мой вопрос - почему? Я хочу, чтобы buycondition возвращало 1 или 0, независимо от типа bool или double.