[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 578

 

Salve.

Domanda, è possibile chiamare un indicatore standard in un indicatore personalizzato, ma che l'indicatore standard sia calcolato sulla base di un altro indicatore personalizzato invece che sul prezzo?

Grazie.

 
Quello che c'è nel codice standard è la base su cui sarà calcolato. In altre parole, non si può.
 
<br / translate="no"> Ciò che è nel codice standard è la base su cui sarà calcolato. In altre parole, non si può.

A meno che, ovviamente, non sia "OnArray".
 
valenok2003 >>:
Что в коде стандартного заложено, на основе того он и будет расчитываться. Т.е. нельзя.
ma si può usare un algoritmo identico all'indicatore standard...
 
SergNF >>:

Если конечно не "OnArray"
Come appare nel codice?
 
trader_fx писал(а) >>
Come appare nel codice?


Si riempie un array e poi si mette un "indicatore standard" su di esso (RSIOnArray, CCIOnArray ecc. - circa 7 pezzi).

Ultima menzione sul forum, e in generale F1, tutorial ecc.

 
ragazzi che possono spiegare Pyxlik2009 ha scritto >>.

Все слава богу написал но вот сталкнулся с такой проблемой тестится тестится а потом тупо встанет и стоит в чем проблема?

Ho bisogno di un po' più di velocità per testare il sistema, ma il mio EA non è testato da molto tempo )))


 
Pyxlik2009 >>:
парни кто обьяснит Pyxlik2009 писал(а) >>

Все слава богу написал но вот сталкнулся с такой проблемой тестится тестится а потом тупо встанет и стоит в чем проблема?

и можно как нибудь увеличить скорость тестирования а то у меня не один так советник долго не тестится )))


Se ottimizzi su un timeframe grande - H4 o D1, usando il metodo di tutti i tick e su un timeframe lungo, succede. È necessario ottimizzare il codice, rimuovere tutti i cicli inutili, ridurre la dimensione dei buffer, degli array (dove non è necessario). Meglio ancora, scrivi l'Expert Advisor per i prezzi di apertura. Assicuratevi che ci sia abbastanza memoria libera. In passato c'erano bug molto strani, per esempio, l'uso abbondante di commenti come [/* ... */] rallentava i test, e dopo che sono stati rimossi i test hanno iniziato a funzionare.

 

Ecco il codice per un principiante, per favore.

//+------------------------------------------------------------------+
//|                                          Arrows and Curves EA.mq4 |
//|           Простой эксперт использующий индикатор Стрелки и Линии |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006"
#property link      "kolas@list.ru"

// Параметры торговли для H4 EURUSD
extern double TrailingStop = 30;
extern double TakeProfit   = 30;
extern double StopLoss     = 80;

// Параметры  моего индикатора индикатора 
extern int MA_Period=13;
extern int MA_Shift=0;
extern int MA_Method=0;
extern int SSP             = 6; 

// Параметры MM
extern double Slippage     = 3;
extern bool PropotinalLots = false; // Реинвестирование
extern double MinDepo      = 100;   // Минимальный депозит
extern double FixedLots    = 0.1;   // Фиксированный размер ордера
extern double PercentLots  = 10;    // Процент реинвестирования

// Идентификация эксперта
extern string NameEA       = "Arrows and Curves";
extern int MAGICNUM        = 123;

double Lots;
double Sloss, Tprof;
bool Buy = false, Sell = false;
static int PrevBar = 0;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init() 
  {return(0);}
  
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit() 
  {return(0);}
  
//+------------------------------------------------------------------+
//|  Получение сигналов на покупку и продажу                         |
//+------------------------------------------------------------------+
void Indicators() 
   {                  
      Buy = (iCustom(Symbol(),0,"BBANDS~1", MA_Period, MA_Shift, MA_Method,  2, 2) > 0) &&  (Time[0] != PrevBar);
      Sell = (iCustom(Symbol(),0,"BBANDS~1", Length, Deviation, MoneyRisk, Signal, Line, Nbars, 3, 3) > 0) && (Time[0] != PrevBar);
   }
   
//+------------------------------------------------------------------+
//|  Вывод предупреждения об отправке ордера                         |
//+------------------------------------------------------------------+
void prtAlert(string str = "") 
  {
      Print(str);
      Alert(str);
  }
  
//+------------------------------------------------------------------+
//|  Расчет размера ордера                                           |
//+------------------------------------------------------------------+
void LotsSize()
   {
      Lots = FixedLots;
      if (PropotinalLots) Lots = MathCeil(AccountFreeMargin() / 10000 * PercentLots) / 10;
      if (Lots > 10000) Lots = 10000;
   }  
  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start() 
  {
   // Проверка истории
   if(Bars < SSP) 
     {
       Print("Not enough bars for this strategy - ", NameEA);
       return(-1);
     }
   // Расчет значений индикатора
   Indicators();
   
   // Расчет желаемого размера ордера
   LotsSize();   

   // Трейлинг и разворот
   int totalOrders = OrdersTotal();
   int numPos = 0;

   for(int i = 0; i < totalOrders; i++) 
     {
       OrderSelect(i, SELECT_BY_POS);    
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MAGICNUM) 
         {
           numPos++;
           // Проверяем покупку
           if(OrderType() == OP_BUY) 
             {
               // Закрываем при развороте
               if (Sell) 
               {
                  OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Blue); 
                  numPos--;
               }
               else
               // Трейлинг стоп
               if(TrailingStop > 0) 
                 {
                   if(Bid - OrderOpenPrice() > TrailingStop*Point) 
                     {
                       if(OrderStopLoss() < (Bid - TrailingStop*Point))
                           OrderModify(OrderTicket(), OrderOpenPrice(), 
                                       Bid - TrailingStop*Point, OrderTakeProfit(), 0, Blue);
                     }
                 }
               
             } 
           else 
             // Проверяем продажу
             {
               // Закрываем при развороте
               if (Buy) 
               {
                  OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Red);
                  numPos--;
               }
               else
               // Трейлинг стоп
               if(TrailingStop > 0) 
                 {
                   if(OrderOpenPrice() - Ask > TrailingStop*Point)
                     {
                       if(OrderStopLoss() == 0 || OrderStopLoss() > Ask + TrailingStop*Point)
                           OrderModify(OrderTicket(), OrderOpenPrice(), 
                                       Ask + TrailingStop*Point, OrderTakeProfit(), 0, Red);
                     }           
                 }
             }
         }
     }
     
   // Открываем новые ордера
   if(numPos < 1)
     {   
       // Если размер депозита устраивает
       if(AccountFreeMargin() < MinDepo)
         {
           Print("Not enough money to trade ", Lots, " lots. Strategy:", NameEA);
           return(0);
         }
       // Если есть сигнал на покупку
       if (Buy)
         {
           Sloss = Ask - StopLoss * Point;
           Tprof = Bid + TakeProfit * Point;
           PrevBar = Time[0];
            OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Sloss, Tprof, NameEA + CurTime(), 
                     MAGICNUM, 0, Green);
           prtAlert("Buying"); 
         }
       // Если есть сигнал на продажу
       if (Sell) 
         {
           Sloss = Bid + StopLoss * Point;
           Tprof = Ask - TakeProfit * Point;
           PrevBar = Time[0];
            OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, Sloss, Tprof, NameEA + CurTime(), 
                     MAGICNUM, 0, Red);
           prtAlert("Selling"); 
         }
     } 

   return(0);
  }
 
Pyxlik2009 >>:

вот код подскажите новичку плиз.

tutti hanno capito perché ci vuole così tanto tempo ))))