Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 151

 
Forexman77:
Подскажите, как выставить стоп по максимуму или минимуму бара, на котором отрыта сделка?

Если максимум, то High[ ] вместо стопа, если минимум Low[ ], но имейте ввиду две вещи.


1.Это спред и растояние до стопа устанавливаемое диллером.

2. Вы не можете выставить корректно стоп на баре который формируется. То есть High[0]. А только на предыдущих барах. Т.е. High[1] и т.д.

 
satorifx:

Добрый день.

Подскажите, как программно увязать на графике 2 системы координат: (X, Y) и (время, цена)? Нужен label с координатами (X,Y), который всегда будет находиться на минимальной цене на графике.

artmedia70:
Есть отличия. На графике вообще, т.е. на всей доступной в терминале истории, или на видимом графике (в пределах экрана монитора) ?


Именно на видимом графике в пределах экрана монитора

 
satorifx:

Именно на видимом графике в пределах экрана монитора

Киньте этот скрипт на график:

//+------------------------------------------------------------------+
//|                                       sc_LowestPricePerChart.mq4 |
//|                               Copyright 2013, Artyom A. Trishkin |
//|                          artmedia70@gmail.com, Skype: Artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, Artyom A. Trishkin"
#property link      "artmedia70@gmail.com, Skype: Artmedia70"
//+------------------------------------------------------------------+
//|           script program start function                                    |
//+------------------------------------------------------------------+
int start() {
   int count=WindowBarsPerChart();                             // количество видимых баров 
   int LowestBar=iLowest(Symbol(),Period(),MODE_LOW,count,0);  // бар с минимальной ценой
   double LowestPricePerChart=Low[LowestBar];                  // минимальная цена из видимых баров
   SetArrow(5, Yellow, "sc_LowestPricePerChart_LowestPrice", Time[LowestBar], LowestPricePerChart, 1);
   return(0);
}
//+------------------------------------------------------------------+
void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=0) {
   if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0, 0);
   ObjectSet(nm, OBJPROP_TIME1    , t1);
   ObjectSet(nm, OBJPROP_PRICE1   , p1);
   ObjectSet(nm, OBJPROP_ARROWCODE, cd);
   ObjectSet(nm, OBJPROP_COLOR    , cl);
   ObjectSet(nm, OBJPROP_WIDTH    , sz);
}
//+------------------------------------------------------------------+

По аналогии сделаете и для максимума

 
artmedia70:

Киньте этот скрипт на график:

По аналогии сделаете и для максимума


Дело в том, что объект ARROW имеет координаты (время, цена), но не имеет координат (x,y). Да, он фиксируется на определенном ценовом уровне, и если например расширять вверх окно индикатора внизу экрана, объект сдвигается вместе с окном, но при этом меняются координаты (x,y) объкта в окне, а их расчитать нет возможности, потому что нет связи между двумя системами координат. В принципе вместо ARROW так можно взять объект TEXT или любой другой, но это проблему не решает.
 
satorifx:
Дело в том, что объект ARROW имеет координаты (время, цена), но не имеет координат (x,y). Да, он фиксируется на определенном ценовом уровне, и если например расширять вверх окно индикатора внизу экрана, объект сдвигается вместе с окном, но при этом меняются координаты (x,y) объкта в окне, а их расчитать нет возможности, потому что нет связи между двумя системами координат. В принципе вместо ARROW так можно взять объект TEXT или любой другой, но это проблему не решает.

Ну тогда привязывайте белое к горячему. Вам показали как узнать минимальную цену на видимых барах, и вам показали как её отметить на графике.

Остальное - ваши неясные мне хотелки ;)

 
Sepulca:



Не совсем понял, что вы хотели сказать? Если бы не было файла(не был открыт) или была бы ошибка при чтении. То выдало сообщение, а так никакого известия нету...
 
Необходимо, прописать код так, чтобы на баре, котором открыта сделка, был выход из позиции, если образуется шип, на следующем баре сразу после бара с шипом, но игнорировались сигналы на барах, после бара на котором открыта сделка, где возник шип. С кодом описывающим шип проблем не возникает. Трудность в том, как указать программе, что для сигнала используем, только бар на котором открыта сделка.
 
Forexman77:
Необходимо, прописать код так, чтобы на баре, котором открыта сделка, был выход из позиции, если образуется шип, на следующем баре сразу после бара с шипом, но игнорировались сигналы на барах, после бара на котором открыта сделка, где возник шип. С кодом описывающим шип проблем не возникает. Трудность в том, как указать программе, что для сигнала используем, только бар на котором открыта сделка.
У сделки есть время открытия OrderOpenTime(); А есть функция, которая вам покажет номер бара по времени iBarShift(); Вот это бар и используйте в качестве "... что для сигнала используем, только бар на котором открыта сделка ..."
 
artmedia70:
У сделки есть время открытия OrderOpenTime(); А есть функция, которая вам покажет номер бара по времени iBarShift(); Вот это бар и используйте в качестве "... что для сигнала используем, только бар на котором открыта сделка ..."

Спасибо, буду разбираться.
 
Zolotai:

Не совсем понял, что вы хотели сказать? Если бы не было файла(не был открыт) или была бы ошибка при чтении. То выдало сообщение, а так никакого известия нету...

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ|FILE_WRITE,";");// Открытие файла.

Если FILE_WRITE не комбинируется с FILE_READ, то будет открыт файл нулевой длины. Даже если до открытия в файле были данные, то они будут уничтожены.
Если необходимо дописывать данные в существующий файл, то его нужно открывать, используя комбинацию FILE_READ | FILE_WRITE.
Если FILE_READ не комбинируется с FILE_WRITE, то файл будет открыт только в том случае, если он уже существует. Если файл не существует, то создать его можно, используя режим FILE_WRITE.

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