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

 
Скажите, пожалуйста, почему у меня не удается переустановить терминал с 432 -го билда на предлагаемый 438-ой? Выдается ошибка при скачивании файла MetaEditor.exe и установка прерывается. В чем дело и что делать?
 
sergeev:

ну тогда фунция OrderLots.


не могу разобраться в этой функции, помогите пожалуйста с примером:)

тут написано "Ордер должен быть предварительно выбран с помощью функции OrderSelect()" как мне выбрать все открытые ордера одного направления?

 
Elektronik:


не могу разобраться в этой функции, помогите пожалуйста с примером:)

тут написано "Ордер должен быть предварительно выбран с помощью функции OrderSelect()" как мне выбрать все открытые ордера одного направления?

Все никак. Только в цикле перебирая поштучно с помощью OrderSelect().

 

кто может подскажите вот есть скрипт стоп лосса надо его вставить в этот советник

double x = ... // Задаем на сколько пипсов выше
double sl = NormalizeDouble(High[1] + x * Point, Digits); // Задаем значение стоплосс на x пипсов выше предпоследней свечи
Файлы:
 

Как сократить количество знаков после запятой без округления?

(DoubleToStr(NormalizeDouble(0.109,2),2)); = 0.11 а надо 0.10

 
Elektronik:

Как сократить количество знаков после запятой без округления?

(DoubleToStr(NormalizeDouble(0.109,2),2)); = 0.11 а надо 0.10

Способов миллион, например, с помощью строковых функций найти местоположение точки и обрезать строку на один символ далее нее. Но если есть готовое штатное решение, то зачем выдумывать проблемы на ровном месте? Поменяйте двойку на единицу и все.
 
Reshetov:
Способов миллион, например, с помощью строковых функций найти местоположение точки и обрезать строку на один символ далее нее. Но если есть готовое штатное решение, то зачем выдумывать проблемы?


подскажите пожалуйста это готовое решение:)

 
Elektronik:


подскажите пожалуйста это готовое решение:)

(DoubleToStr(NormalizeDouble(0.109,1));
 

Если без округления, то только этот :

Reshetov с помощью строковых функций найти местоположение точки и обрезать строку на один символ далее нее

 

Пожалуйста помогите понять что не так:

//+------------------------------------------------------------------+

//| AAAA.mq4 |

//| |

//| |

//+------------------------------------------------------------------+

#property copyright ""

#property link ""


extern string TimeStart = "00:00"; //Время начала контрольного периода

extern string TimeEnd = "00:00"; //Время окончания контрольного периода


extern double LOT = 0.01; // лот

extern int Magic = 777; // маджик



double marga,Lot,SL,TP; // Введены переменные маржа,лот, стоп лосс и тейк профит

int Total,Orders,tipOrders,TradeDey; // введены переменные тип, ордера, тип ордеров,торговый день.


//+---------------------------------------------------------------------------------------------------------------------------------------+

//| функции эксперта |

//+---------------------------------------------------------------------------------------------------------------------------------------+

int start() // Функция инициализации старт

{

datetime Time_Start = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeStart, ":00")); // Стартовые параметры//

datetime Time_End = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeEnd, ":00")); // Параметры окончания//



Total=0; // Если нет ордеров

for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордеров

{

if (OrderSelect(i-1,SELECT_BY_POS)==false) // Если нет рыночных ордер

{

if //Если:

{

int BarStart = iBarShift(NULL,PERIOD_M1,Time_Start,false); //поиск бара начала контрольного периода на м1

int BarEnd = iBarShift(NULL,PERIOD_M1,Time_End,false); //поиск бара окончания контрольного периода на м1

double Max_Price=iHigh(NULL,0,iHighest(NULL,PERIOD_M1,MODE_HIGH,BarStart-BarEnd,BarEnd)); //наибольшее значение цены за промежуток

double Min_Price=iLow (NULL,0,iLowest (NULL,PERIOD_M1,MODE_LOW, BarStart-BarEnd,BarEnd)); //наименьшее значение цены за промежуток

}

if (TimeCurrent()>Time_End && ObjectFind("bar0"+Time_End)==-1) // Графические настройки отображения

{

ObjectCreate("bar0"+Time_End, OBJ_RECTANGLE, 0, 0,0, 0,0);

ObjectSet ("bar0"+Time_End, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet ("bar0"+Time_End, OBJPROP_COLOR, Blue);

ObjectSet ("bar0"+Time_End, OBJPROP_BACK, true);

ObjectSet ("bar0"+Time_End, OBJPROP_TIME1,Time_Start);

ObjectSet ("bar0"+Time_End, OBJPROP_PRICE1,Max_Price);

ObjectSet ("bar0"+Time_End, OBJPROP_TIME2,Time_End);

ObjectSet ("bar0"+Time_End, OBJPROP_PRICE2,Min_Price);

}

if (Bid<Max_Price) OrderSend(Symbol(),OP_BUYSTOP,LOT,Ask,3,Min_Price, //условия постановки отложенного ордер BUY

NormalizeDouble(Ask + Max_Price - Min_Price,Digits),"UPDD",Magic,Blue);

if (Bid>Max_Price)

Comment("Невозможно выставить отложенный ордер на БАЙ");

if (Bid>Min_Price) OrderSend(Symbol(),OP_SELLSTOP,LOT,Bid,3,Min_Price, //условия постановки отложенного ордер SELL

NormalizeDouble(Ask + Max_Price-Min_Price,Digits),"UPDD",Magic,Blue);

if (Bid<Max_Price)

Comment("Невозможно выставить отложенный ордер на СЕЛЛ");

}

return;

}

Не могу скомпилировать. а так вообще он должен выставлять два отложенных ордера вверх и вниз от диапазона.

Причина обращения: