Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 257

 
Здраствуйте еще раз! Помогите с этой банальностью для вас, ато я разобраться не могу....

Хочу сделать следующее! 

Когда открывается первая сделка по цене к примеру 1.23455, то хочу что бы вторая сделка открывалась когда цена пойдет на 1.23415

PHP код:
double positionTPask NormalizeDouble(Ask PointDigits);
double lastTPask1 NormalizeDouble(Ask 40 PointDigits);

if (
RSI0 RSIDownLevel && RSIDownLevel <= RSI1){
      
TP  NormalizeDouble(Ask takeprofit Point,Digits); 
      if (
OrderSend(Symbol(),OP_BUYLot,NormalizeDouble(Ask,Digits),slippage,0,TP,NULL,Magic)==-1) Print(GetLastError());
      
   if (
positionTPask1 lastTPask1){
      if (
takeprofit!=0TPm  NormalizeDouble(Ask takeprofit PointDigits); 
      if (
OrderSend(Symbol(), OP_BUYLotNormalizeDouble(AskDigits), slippage0TPmNULLMagic)==-1) Print(GetLastError());
      }}  
А у меня открываются 2 ордера сразу на одной цене...
правильно сделано? посмотрите плизз...
 

sviter-pro:
Здраствуйте еще раз! Помогите с этой банальностью для вас, ато я разобраться не могу....

Хочу сделать следующее! 

Когда открывается первая сделка по цене к примеру 1.23455, то хочу что бы вторая сделка открывалась когда цена пойдет на 1.23415

double positionTPask = NormalizeDouble(Ask * Point, Digits);
double lastTPask1 = NormalizeDouble(Ask - 40 * Point, Digits);

if (RSI0 < RSIDownLevel && RSIDownLevel <= RSI1){
      TP  = NormalizeDouble(Ask + takeprofit * Point,Digits); 
      if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,0,TP,NULL,Magic)==-1) Print(GetLastError());
      
   if (positionTPask1 > lastTPask1){
      if (takeprofit!=0) TPm  = NormalizeDouble(Ask + takeprofit * Point, Digits); 
      if (OrderSend(Symbol(), OP_BUY, Lot, NormalizeDouble(Ask, Digits), slippage, 0, TPm, NULL, Magic)==-1) Print(GetLastError());
      }}  
А у меня открываются 2 ордера сразу на одной цене...

правильно сделано? посмотрите плизз...

В первой же строке увидел странность. Дальше не смотрел.

Вот это зачем?

double positionTPask = NormalizeDouble(Ask * Point, Digits);

На калькуляторе умножьте Ask на Point

И, пожалуйста, вставляйте код правильно - для этого есть кнопочка SRC в меню редактора нового сообщения.

 
sviter-pro:
Здраствуйте еще раз! Помогите с этой банальностью для вас, ато я разобраться не могу....

Хочу сделать следующее! 

Когда открывается первая сделка по цене к примеру 1.23455, то хочу что бы вторая сделка открывалась когда цена пойдет на 1.23415

PHP код:
double positionTPask NormalizeDouble(Ask PointDigits);
double lastTPask1 NormalizeDouble(Ask 40 PointDigits);

if (
RSI0 RSIDownLevel && RSIDownLevel <= RSI1){
      
TP  NormalizeDouble(Ask takeprofit Point,Digits); 
      if (
OrderSend(Symbol(),OP_BUYLot,NormalizeDouble(Ask,Digits),slippage,0,TP,NULL,Magic)==-1) Print(GetLastError());
      
   if (
positionTPask1 lastTPask1){
      if (
takeprofit!=0TPm  NormalizeDouble(Ask takeprofit PointDigits); 
      if (
OrderSend(Symbol(), OP_BUYLotNormalizeDouble(AskDigits), slippage0TPmNULLMagic)==-1) Print(GetLastError());
      }}  
А у меня открываются 2 ордера сразу на одной цене...
правильно сделано? посмотрите плизз...
Нужно плясать не от Ask-40*Point, а от ценаоткрытия1позы-40*Point.
 

С индикаторами работал не достаточно много, поэтому возник такой, возможно простой вопрос, как отключить отображение графического буфера в "Окно Данных"? Хочу убрать 3 и 4 буфер, вот код:

#property strict
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Black
#property indicator_color2 Yellow
#property indicator_color3 Black
#property indicator_color4 Black

//---- input parameters
input int RSIPeriod=14;
input int Levl=50;
input ENUM_TIMEFRAMES TF=PERIOD_CURRENT;
//---- buffers
double RSIBuffer[];
double MABuffer[];
double PosBuffer[];
double NegBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- 2 additional buffers are used for counting.
   IndicatorBuffers(4);
   SetIndexBuffer(0,RSIBuffer);
   SetIndexBuffer(1,MABuffer);
   SetIndexBuffer(2,PosBuffer);
   SetIndexBuffer(3,NegBuffer);
   
//---- indicator line
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexStyle(2,DRAW_NONE);
   SetIndexStyle(3,DRAW_NONE);
//----
//---- name for DataWindow and indicator subwindow label
   short_name="RSI("+IntegerToString(RSIPeriod,0,' ')+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
   SetIndexLabel(1,"Levl"+"_"+IntegerToString(Levl,0,' ')+" Price");
   SetIndexLabel(2,"U");
   SetIndexLabel(3,"D");
   

   return(0);
  }

Это измененный RSI - буфера там нужны, так-как расчет идет на основе прошлых данных и не хотелось бы менять каждый раз размер буфера (если он не графический) и дописывать туда новые данные, поэтому графические буфера удобны для моих целей.

 
Alekseu Fedotov:
Нужно плясать не от Ask-40*Point, а от ценаоткрытия1позы-40*Point.

Так прочтите цену открытия и пляшите....

 
Aleksey Vyazmikin:

С индикаторами работал не достаточно много, поэтому возник такой, возможно простой вопрос, как отключить отображение графического буфера в "Окно Данных"? Хочу убрать 3 и 4 буфер, вот код:

Это измененный RSI - буфера там нужны, так-как расчет идет на основе прошлых данных и не хотелось бы менять каждый раз размер буфера (если он не графический) и дописывать туда новые данные, поэтому графические буфера удобны для моих целей.


Не знаю на сколько правильно я вас понял.

Попробуйте так:  #property indicator_buffers 

#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Black
#property indicator_color2 Yellow
 
Alexander Voronkov:

Не знаю на сколько правильно я вас понял.

Попробуйте так:  #property indicator_buffers 


Кажется, Вы правы! А я по простоте душевной, думал, что это обязательно нужно объявлять, если используется графический буфер для расчетов.

Спасибо!
 
Aleksey Vyazmikin:     как отключить отображение графического буфера в "Окно Данных"? Хочу убрать 3 и 4 буфер, вот код:

для запрета вывода в окно данных надо так

SetIndexLabel(2,NULL);  // Запрет в окно Данные буфера 3
SetIndexLabel(3,NULL);  // Запрет в окно Данные буфера 4
 
STARIJ:

для запрета вывода в окно данных надо так


Спасибо. Такой ход позволит видеть запрещенные на вывод в окне данных буфера через iCustom?

 
Aleksey Vyazmikin:   Спасибо. Такой ход позволит видеть запрещенные на вывод в окне данных буфера через iCustom?

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

Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - Справка по MetaTrader 5
Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - Справка по MetaTrader 5
  • www.metatrader5.com
Графики в торговой платформе отображают изменение котировок финансовых инструментов во времени. Они необходимы для проведения технического анализа...
Причина обращения: