Спрашивайте! - страница 175

 

Это гораздо лучший метод. Я возился с if (Ask == OrderTakeProfit()) {...}, перебирая каждый открытый ордер, который, как мне кажется, был немного неадекватным при обратном тестировании. Спасибо!

 

Как закомментировать число, которое закомментирует строку?

string 2;

2="EURUSD";

КАК МНЕ СОЗДАТЬ КОММЕНТАРИЙ, ГДЕ 2 БУДЕТ КОММЕНТИРОВАТЬСЯ КАК EURUSD НА ГРАФИКЕ?

ПОЖАЛУЙСТА, ПОМОГИТЕ - ЗАПУТАЛСЯ!

ДЭЙВ

 

Вы не можете сделать это в mql.

В mql имя переменной не может быть числом и не может начинаться с числа, поэтому единственное решение - добавить перед "2" букву, знак подчеркивания или другой разрешенный символ

1Dave7:
строка 2;

2="EURUSD";

КАК МНЕ СОЗДАТЬ КОММЕНТАРИЙ, ГДЕ 2 БУДЕТ КОММЕНТИРОВАТЬСЯ КАК EURUSD НА ГРАФИКЕ?

ПОЖАЛУЙСТА, ПОМОГИТЕ - ЗАПУТАЛСЯ!

ДЭЙВ
 

Как сделать массив в порядке убывания на следующем:

double D0=0,D1=0,D2=0,D3=0,D4=0,D5=0,D6=0,D7=0);

D0=iCustom(NULL,0, "XYZ",0,0);

D1=iCustom(NULL,0, "XYZ",1,0);

D2=iCustom(NULL,0, "XYZ",2,0);

D3=iCustom(NULL,0, "XYZ",3,0);

D4=iCustom(NULL,0, "XYZ",4,0);

D5=iCustom(NULL,0, "XYZ",5,0);

D6=iCustom(NULL,0, "XYZ",6,0);

D7=iCustom(NULL,0, "XYZ",7,0);

КАК МНЕ ИНИЦИАЛИЗИРОВАТЬ УБЫВАЮЩИЙ МАССИВ ЗНАЧЕНИЙ (D0,D1,D2,D3,D4,D5,D6,D7)???? КАК МНЕ ОБРАТИТЬСЯ К РЕЗУЛЬТАТАМ МАССИВА В МОЕЙ EA?

СПАСИБО ЗА ПОМОЩЬ - Я БУДУ ОЧЕНЬ РАД, ЕСЛИ СМОГУ ПРЕОДОЛЕТЬ ЭТУ ПРОБЛЕМУ!

Дэйв

 

Если вам нужны только отсортированные значения, вы можете сделать что-то вроде этого :

double array[8];

array[0]=iCustom(NULL,0,"XYZ",0,0);

array[1]=iCustom(NULL,0,"XYZ",1,0);

array[2]=iCustom(NULL,0,"XYZ",2,0);

array[3]=iCustom(NULL,0,"XYZ",3,0);

array[4]=iCustom(NULL,0,"XYZ",4,0);

array[5]=iCustom(NULL,0,"XYZ",5,0);

array[6]=iCustom(NULL,0,"XYZ",6,0);

array[7]=iCustom(NULL,0,"XYZ",7,0);

ArraySort(array,WHOLE_ARRAY,0,MODE_ASCEND);

и тогда отсортированные значения будут находиться в массиве "array"

1Dave7:
double D0=0,D1=0,D2=0,D3=0,D4=0,D5=0,D6=0,D7=0);

D0=iCustom(NULL,0, "XYZ",0,0);

D1=iCustom(NULL,0, "XYZ",1,0);

D2=iCustom(NULL,0, "XYZ",2,0);

D3=iCustom(NULL,0, "XYZ",3,0);

D4=iCustom(NULL,0, "XYZ",4,0);

D5=iCustom(NULL,0, "XYZ",5,0);

D6=iCustom(NULL,0, "XYZ",6,0);

D7=iCustom(NULL,0, "XYZ",7,0);

КАК МНЕ ИНИЦИАЛИЗИРОВАТЬ УБЫВАЮЩИЙ МАССИВ ЗНАЧЕНИЙ (D0,D1,D2,D3,D4,D5,D6,D7)???? КАК МНЕ ОБРАТИТЬСЯ К РЕЗУЛЬТАТАМ МАССИВА В МОЕЙ EA?

СПАСИБО ЗА ПОМОЩЬ - Я БУДУ ОЧЕНЬ РАД, ЕСЛИ МНЕ УДАСТСЯ ПРЕОДОЛЕТЬ ЭТО "БУТЫЛОЧНОЕ ГОРЛЫШКО"!

Дэйв
 
mladen:
Если вам нужны только отсортированные значения, вы можете сделать что-то вроде этого :
double array[8];

array[0]=iCustom(NULL,0,"XYZ",0,0);

array[1]=iCustom(NULL,0,"XYZ",1,0);

array[2]=iCustom(NULL,0,"XYZ",2,0);

array[3]=iCustom(NULL,0,"XYZ",3,0);

array[4]=iCustom(NULL,0,"XYZ",4,0);

array[5]=iCustom(NULL,0,"XYZ",5,0);

array[6]=iCustom(NULL,0,"XYZ",6,0);

array[7]=iCustom(NULL,0,"XYZ",7,0);

ArraySort(array,WHOLE_ARRAY,0,MODE_ASCEND);

и тогда отсортированные значения будут находиться в массиве "array"

WOW!!!!!!!!!!!! Я бы никогда не догадался об этом - спасибо большое!!!

 

Пожалуйста, помогите заставить этот массив работать - озадачен!!!

[/PHP] EUR=(iMA("EURUSD",0,PerAvr,0,MODE_LWMA,PRICE_CLOSE,i)-iMA("EURUSD",0,PerAvr,0,MODE_LWMA,PRICE_CLOSE,i+Delta)); //RED

GBP=(iMA("GBPUSD",0,PerAvr,0,MODE_LWMA,PRICE_CLOSE,i)-iMA("GBPUSD",0,PerAvr,0,MODE_LWMA,PRICE_CLOSE,i+Delta)); //LIME

double array[7];

array[0]=iCustom(NULL,0,"EURUSD",0,0);

array[1]=iCustom(NULL,0,"GBPUSD",1,0);

array[2]=iCustom(NULL,0,"AUDUSD",2,0);

array[3]=iCustom(NULL,0,"USDCHF",3,0);

array[4]=iCustom(NULL,0,"USDJPY",4,0);

array[5]=iCustom(NULL,0,"NZDUSD",5,0);

array[6]=iCustom(NULL,0,"USDCAD",6,0);

ArraySort(array,WHOLE_ARRAY,0,MODE_ASCEND);

a=array[0];b=array[1];c=array[2];d=array[3];e=array[4];f=array[5];g=array[6];

{

ObjectCreate("DISPLAY10", OBJ_LABEL, 1, 0, 0);

ObjectSetText("DISPLAY10", DoubleToStr(a,0), 10, "ArialBold", Red);//"EURUSD =" ,

ObjectSet("DISPLAY10", OBJPROP_CORNER, 1);

ObjectSet("DISPLAY10", OBJPROP_XDISTANCE, 80);

ObjectSet("DISPLAY10", OBJPROP_YDISTANCE, 20);

//return(0);

}

{

ObjectCreate("DISPLAY20", OBJ_LABEL, 1, 0, 0);

ObjectSetText("DISPLAY20", DoubleToStr(b,0), 10, "ArialBold", Lime);//"GBPUSD =" ,

ObjectSet("DISPLAY20", OBJPROP_CORNER, 1);

ObjectSet("DISPLAY20", OBJPROP_XDISTANCE, 80);

ObjectSet("DISPLAY20", OBJPROP_YDISTANCE, 40);

//return(0);

}

[PHP]

Я пытался получить значение для a,b и отобразить его, но отображается только 0 для a, 0 для b и все остальные значения c-f. Я надеялся получить порядок возрастания валют. Не могли бы вы помочь разобраться, почему это не работает?

Хотел бы я купить вам пиво за вашу помощь!

 

Проверьте строки, которые выглядят следующим образом:

array[0]=iCustom(NULL,0,"EURUSD",0,0);

Эта строка означает, что у вас есть индикатор с именем "EURUSD", и что вы вызываете его, чтобы получить некоторое значение и присвоить его первому элементу "массива". Если его не существует (индикатора с таким названием, что, как я предполагаю, верно), то элементу массива будет присвоено значение 0. Что именно вы пытаетесь получить с помощью этой строки?

1Dave7:
EUR=(iMA("EURUSD",0,PerAvr,0,MODE_LWMA,PRICE_CLOSE,i)-iMA("EURUSD",0,PerAvr,0,MODE_LWMA,PRICE_CLOSE,i+Delta)); //RED

GBP=(iMA("GBPUSD",0,PerAvr,0,MODE_LWMA,PRICE_CLOSE,i)-iMA("GBPUSD",0,PerAvr,0,MODE_LWMA,PRICE_CLOSE,i+Delta)); //LIME

двойной массив[7];

array[0]=iCustom(NULL,0, "EURUSD",0,0);

array[1]=iCustom(NULL,0, "GBPUSD",1,0);

array[2]=iCustom(NULL,0, "AUDUSD",2,0);

array[3]=iCustom(NULL,0, "USDCHF",3,0);

array[4]=iCustom(NULL,0, "USDJPY",4,0);

array[5]=iCustom(NULL,0, "NZDUSD",5,0);

array[6]=iCustom(NULL,0, "USDCAD",6,0);

ArraySort(array,WHOLE_ARRAY,0,MODE_ASCEND);

a=array[0];b=array[1];c=array[2];d=array[3];e=array[4];f=array[5];g=array[6];

{

ObjectCreate("DISPLAY10", OBJ_LABEL, 1, 0, 0);

ObjectSetText("DISPLAY10", DoubleToStr(a,0), 10, "ArialBold", Red);//"EURUSD =" ,

ObjectSet("DISPLAY10", OBJPROP_CORNER, 1);

ObjectSet("DISPLAY10", OBJPROP_XDISTANCE, 80);

ObjectSet("DISPLAY10", OBJPROP_YDISTANCE, 20);

//return(0);

}

{

ObjectCreate("DISPLAY20", OBJ_LABEL, 1, 0, 0);

ObjectSetText("DISPLAY20", DoubleToStr(b,0), 10, "ArialBold", Lime);//"GBPUSD =" ,

ObjectSet("DISPLAY20", OBJPROP_CORNER, 1);

ObjectSet("DISPLAY20", OBJPROP_XDISTANCE, 80);

ObjectSet("DISPLAY20", OBJPROP_YDISTANCE, 40);

//return(0);

}

Я пытался получить значение для a,b и отобразить его, но отображается только 0 для a, 0 для b и все остальные значения c-f. Я надеялся получить порядок возрастания валют. Не могли бы вы помочь разобраться, почему это не работает?

Хотел бы я угостить вас пивом за вашу помощь!
 
mladen:
Проверьте строки, которые идут вот так:
array[0]=iCustom(NULL,0,"EURUSD",0,0);
Эта строка означает, что у вас есть индикатор под названием "EURUSD" и что вы вызываете его, чтобы получить некоторое значение и присвоить его 1-му элементу "массива". Если его не существует (индикатора с таким названием, что, как я предполагаю, верно), то элементу массива будет присвоено значение 0. Что именно вы пытаетесь получить с помощью этой строки?

Массив должен получить значение из "EURUSD", затем сделать восходящий порядок от низкого к высокому по сравнению с другими валютами, а затем вывести рейтинг низких значений на экран. EURUSD, как и другие валюты, просто дает мне 0.00(?). Что я делаю не так???

 

Сделайте это следующим образом:

array[0]=iClose("EURUSD",0,0); [/PHP]

and so on. That way array will be filled with close prices for symbols you select. If you are using a custom indicator then the form is the following :

[PHP]array[0]=iCustom("EURUSD",0,"indicator name",0,0);
1Dave7:
Массив должен получить значение из "EURUSD", затем сделать восходящий порядок от низкого к высокому по сравнению с другими валютами, а затем вывести рейтинг низких значений на экран. EURUSD, как и другие валюты, просто дает мне 0.00(???). Что я делаю не так???
Причина обращения: