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

 

Братцы, не оставьте без внимания потуги новичка !

Требуется готовый скрипт (или что-то вроде того), который бы указывал в архивах

движения по графику с фильтрацией по силе импульса и времени.

Ну то есть вот к примеру  в 14.00 началось движение вверх и закончилось в 14.45.

И величина движения составила  410 пунктов ( по пятизначному исчислению).

Так вот есть ли такой скрипт, который бы обозначил визуально такие движения на графике "в прошлом",

и чтобы значения по силе -времени можно было вставить самостоятельно.

______

Пожалуйста, укажите ветку или место - где могут посоветовать как сделать сие.

В программии - не Аристотель, но подозреваю - что сделать такой скрипт несложно.

___

Готов поделиться вроде бы найденной пробоиной, а главное - параметрами  для фильтра по времени и силе. 

 
Chibrikin:

Дорогие все!

Скачал и запустил PFG FX traider (последняя версия). Попробовал сделать индикатор.

Сразу две загадки:

1.  Мой индикатор виден из-под редактора, открывается и все такое, но на файловой системе я не могу его обнаружить. Вообще никак, даже поиском.

2. Индикатор открывает файл - пишет тики. Пишет и сбоев не дает но файл я тоже не могу найти!!!!

Как так может быть? Windows 7.

 

 

 


В семерке некоторые файлы иногда помещаются не в терминал, а D:\Users\имя пользователя\AppData\Local\VirtualStore\Program Files далее название терминала 

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

 
TUNGUS:

Братцы, не оставьте без внимания потуги новичка !

Требуется готовый скрипт (или что-то вроде того), который бы указывал в архивах

движения по графику с фильтрацией по силе импульса и времени.

Ну то есть вот к примеру  в 14.00 началось движение вверх и закончилось в 14.45.

И величина движения составила  410 пунктов ( по пятизначному исчислению).

Так вот есть ли такой скрипт, который бы обозначил визуально такие движения на графике "в прошлом",

и чтобы значения по силе -времени можно было вставить самостоятельно.

______

Пожалуйста, укажите ветку или место - где могут посоветовать как сделать сие.

В программии - не Аристотель, но подозреваю - что сделать такой скрипт несложно.

___

Готов поделиться вроде бы найденной пробоиной, а главное - параметрами  для фильтра по времени и силе. 


Совсем не понял, чего вы хотите от скрипта.
 

 Срочно нужна помощь, я совсем запутался. Вот функция торговая и функция модификации ордеров:

void OrdersModifying(double& sl, double& tp)
{
  int total = OrdersTotal() - 1;
  sl = 0; tp = 0;
  
  for(int i=total; i>=0; i--)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)                            // Если ордер есть и он выбран..
    {
      if(g_type == OP_BUY)
      {
        if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble(OrderOpenPrice() - i_sl*pt,Digits);                    // Получаем значение стоп-лосса для выбранного ордера
        if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble(OrderOpenPrice() + i_tp*pt,Digits);                    // Получаем значение тейкпрофита для выбранного ордера
      }
      if(g_type == OP_SELL)
      {
        if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble(OrderOpenPrice() + i_sl*pt,Digits);                // Получаем значение стоп-лосса для выбранного ордера
        if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble(OrderOpenPrice() - i_tp*pt,Digits);                // Получаем значение тейкпрофита для выбранного ордера
      }
      if(sl != 0 || tp != 0)                                                            // Если полученные значения sl и tp не равныы 0, то..
      {
        OrderModify(g_ticket,OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400,Lime);      // Модифицируем ордер
      }
    }
  }
}
bool OpenBuy()
{
  g_ticket = -1;
  string myNote = "сов баянул";
  
  if(GetPriceToInput() < Ask)
  {       
    g_ticket = OrderSend(Symbol(),OP_BUYLIMIT,0.1,GetPriceToInput(),3,0,0,myNote,myMagic,0,Blue);
  }
    if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
 
  return(true);
}
bool OpenSell()
{
  g_ticket = -1;
  string myNote = "сов шортанул";
 
  if(GetPriceToInput() > Bid)
  {
    g_ticket = OrderSend(Symbol(),OP_SELLLIMIT,0.1,GetPriceToInput(),3,0,0,myNote,myMagic,0,Red);
  }
    if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
  
  return(true);
}
bool Trade (int signal)
{
  FindOrders();

  if(signal == SIGNAL_BUY)                                                          // Если сигнал на покупку и открытых ордеров нет..
    if(!OpenBuy())                                                                  // открываем лимитный ордер на покупку
      return(false);                                                                
      
  if(signal == SIGNAL_SELL)                                                       // Если сигнал на продажу и открытых ордеров нет..
     if(!OpenSell())
       return(false);                                                              // открываем лимитный ордер на продажу
  
  OrdersModifying(sl, tp); - ТУТ НЕ ВЪЕЗЖАЮ КАК БЫТЬ

  return(true);
}

 

  у меня на данный момент не работает модификация ордеров, хотя когда несколько ф-ций были в одной, то всё работало. Но я хочу что бы все функции были раздельны, для удобства. В общем, мне нужно что бы функция OrdersModifying модифицировала ордера. Я так понимаю, по логике её нужно вставить в функцию Trade туда, куда я и вставил, но нужно передать в неё 2 параметра sl и tp из функции OrdersModifying.

 Правильно ли я передал через параметры функции OrdersModifying т.е. Её переменные sl и tp?

 
hoz:

 Срочно нужна помощь, я совсем запутался. Вот функция торговая и функция модификации ордеров:

 

  у меня на данный момент не работает модификация ордеров, хотя когда несколько ф-ций были в одной, то всё работало. Но я хочу что бы все функции были раздельны, для удобства. В общем, мне нужно что бы функция OrdersModifying модифицировала ордера. Я так понимаю, по логике её нужно вставить в функцию Trade туда, куда я и вставил, но нужно передать в неё 2 параметра sl и tp из функции OrdersModifying.

 Правильно ли я передал через параметры функции OrdersModifying т.е. Её переменные sl и tp?

Вы сначала делаете так  sl = 0; tp = 0;, а потом так if(sl != 0 || tp != 0).
 
rigonich:
Вы сначала делаете так  sl = 0; tp = 0;, а потом так if(sl != 0 || tp != 0).


 Виталий, там же суть понятная. Смотрите:

void OrdersModifying(double& sl, double& tp)
{
  int total = OrdersTotal() - 1;
  sl = 0; tp = 0;
  
  for(int i=total; i>=0; i--)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)                            // Если ордер есть и он выбран..
    {
      if(g_type == OP_BUY)
      {
        if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble(OrderOpenPrice() - i_sl*pt,Digits);                    // Получаем значение стоп-лосса для выбранного ордера
        if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble(OrderOpenPrice() + i_tp*pt,Digits);                    // Получаем значение тейкпрофита для выбранного ордера
      }
      if(g_type == OP_SELL)
      {
        if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble(OrderOpenPrice() + i_sl*pt,Digits);                // Получаем значение стоп-лосса для выбранного ордера
        if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble(OrderOpenPrice() - i_tp*pt,Digits);                // Получаем значение тейкпрофита для выбранного ордера
      }
      if(sl != 0 || tp != 0)                                                            // Если полученные значения sl и tp не равныы 0, то..
      {
        OrderModify(g_ticket,OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400,Lime);      // Модифицируем ордер
      }
    }
  }
}

  В начале sl = 0; tp = 0; Далее я исходя из вводимых пользователем i_sl и i_tp я нахожу нормализованные значения sl и tp  которые будут уже в ордере. И потом я делаю проверку, если  sl и tp не равны нулю т.е. изменились после того как я объявил их в начале функции, то... модифицируем ордер.

 Ну а если  sl и tp равны нулю, значит эти параметры на просчитаны... я так понимаю. Как только я получу значения этих переменных, тогда сразу они станут не равны нулю, и можно модифицировать ордер.. Логично? 

 
hoz:


 Виталий, там же суть понятная. Смотрите:

  В начале sl = 0; tp = 0; Далее я исходя из вводимых пользователем i_sl и i_tp я нахожу нормализованные значения sl и tp  которые будут уже в ордере. И потом я делаю проверку, если  sl и tp не равны нулю т.е. изменились после того как я объявил их в начале функции, то... модифицируем ордер.

 Ну а если  sl и tp равны нулю, значит эти параметры на просчитаны... я так понимаю. Как только я получу значения этих переменных, тогда сразу они станут не равны нулю, и можно модифицировать ордер.. Логично? 



Извините, кое что не разглядел, без очков и не в цвете, но зачем в эту функцию передавать параметры, и к тому же по ссылке? Если i_sl,g_type... глобальные переменные, она будет работать без параметров, а если вам надо изменить их(переменные после модификации), сдепайте это в этой же функции после модификации. 
 
rigonich:

Извините, кое что не разглядел, без очков и не в цвете, но зачем в эту функцию передавать параметры, и к тому же по ссылке? Если i_sl,g_type... глобальные переменные, она будет работать без параметров, а если вам надо изменить их(переменные после модификации), сдепайте это в этой же функции после модификации. 


 Ордера посылают функции OpenBuy() и OpenSell(), но модифицирует ордера функция OrdersModifying()

 Т.е. мне по-любому если, например, функцию модификации поместить в функцию Trade (int signal) или OpenBuy() и OpenSell() туда нужно передать значение sl и tp полученные в функции OrdersModifying(). Ведь в той функции эти значения отсуствут.

 
hoz:


 Ордера посылают функции OpenBuy() и OpenSell(), но модифицирует ордера функция OrdersModifying()

 Т.е. мне по-любому если, например, функцию модификации поместить в функцию Trade (int signal) или OpenBuy() и OpenSell() туда нужно передать значение sl и tp полученные в функции OrdersModifying(). Ведь в той функции эти значения отсуствут.


Функции OpenBuy() и OpenSell() у вас  выставляют ордера без сл и тп и потом, если ордера выставлены, они модифицируются функцией OrdersModifying().  Не вижу необходимости помещать еще куда-то функцию  OrdersModifying() и передавать в нее какие то параметры. Просто переменные sl и tp  надо обьявить в этой функции. int sl = 0, tp = 0;

Извиняюсь, не int, a double 

 
rigonich:

Функции OpenBuy() и OpenSell() у вас  выставляют ордера без сл и тп и потом, если ордера выставлены, они модифицируются функцией OrdersModifying().  Не вижу необходимости помещать еще куда-то функцию  OrdersModifying() и передавать в нее какие то параметры. Просто переменные sl и tp  надо обьявить в этой функции. int sl = 0, tp = 0;


 На данный момент у меня такая функция торговая:

 

bool Trade (int signal)
{
  FindOrders();

  if(signal == SIGNAL_BUY)                                                          // Если сигнал на покупку и открытых ордеров нет..
    if(!OpenBuy())                                                                  // открываем лимитный ордер на покупку
      return(false);                                                                
      
  if(signal == SIGNAL_SELL)                                                       // Если сигнал на продажу и открытых ордеров нет..
     if(!OpenSell())
       return(false);                                                              // открываем лимитный ордер на продажу
  
  if(OrderStopLoss() == 0 && OrderTakeProfit() == 0)
    OrdersModifying();                                                             // Модифицируем ордер, добавим SL и TP
    
  if(UseBU == true)
     MovingStopLossToBU();                                                         // Перевод в б.у. по достижению некоторого значения TP

  return(true);
}

  Модификация не происходит.