[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 424

 
gyfto :

Teoride, ek gösterge arabellekleri bağımsız olarak ve ardından eğilim çizgileri olarak bildirilirse, işe yarayacaktır...

O zaman neden belgeler bunu söylüyor
Tampon sayısı 8'i aşamaz
Burada net değil. Ayrıca, ana arabelleklerin sayısının .. ve hepsinin olmadığını söylemez. Tampon sayısı ve hepsi olduğu söyleniyor. Bu yüzden, okuduğum gibi, yol boyunca verilen göstergenin toplam arabellek sayısına yayılması gerektiğini anlıyorum.
 
gyfto :

Hayır, ObjectCreate () hakkında konuşuyorum, aynı yerde pencere numarasının ayarlanması gerekiyor. Bunun bir alt pencere olup olmadığını (yani, ana pencere olan sıfır değil) nasıl ayarlanacağını da gösterdim.

Bu nedenle, bir nesne oluşturduğunuzda , işlev parametresi WindowOnDropped'dir ve bu zaten ana pencerenin göreli olduğu gibidir. Yoksa ana pencere terminaldeki en soldaki pencere mi?
 

Merhaba! Buystop siparişlerinin neden silinmediğini anlayamıyorum.

 extern double Lots       = 0.01 ;
extern int     Magic      = 333 ;

extern int     StopLoss      = 100 ;       // Размер фиксированного стопа
extern int     TakeProfit    = 100 ;       // Размер фиксированного тэйка
extern int     DistanceSet   = 160 ;       // Расстояние от рынка
extern int     Slippage      = 3 ;       // Проскальзывание цены
color   clOpenBuy     = LightBlue;     // Цвет ордера BuyStop
color   clOpenSell    = LightCoral;   // Цвет ордера SellStop
string Name_Expert   = "Scalp" ;

string Symb;
bool Work= true ;

extern bool    UseSound       = True;   // Использовать звуковой сигнал
extern string NameFileSound  = "expert.wav" ;   // Наименование звукового файла
//============================================================================================
int start()
  {
   int
   Total,
   Tip=- 1 ,
   Ticket,
   TicketB,
   TicketS,
   TicketMB,
   TicketMS,
   buys,
   sells,
   mbuys,
   msells;
   double
   OP_PriceSell,
   OP_PriceBuy, 
   Lot,
   Lts,
   Min_Lot,
   Max_Lot,
   Step,
   Free,
   One_Lot,
   Price,
   SL,
   TP,
   TP1,
   PriceB,
   PriceS,
   SLB,
   SLS;
   bool
   Ans  = false ,
   Opn_B= false ,
   Opn_S= false ,
   Cls_B= false ,
   Cls_S= false ;
//============================================================================================
   // Учёт ордеров
   Symb= Symbol ();
   Total= 0 ;
   buys= 0 ;
   sells= 0 ;
   mbuys= 0 ;
   msells= 0 ;                                    
   for ( int i= 1 ; i<= OrdersTotal (); i++)
     {
       if ( OrderSelect (i- 1 ,SELECT_BY_POS)== true )
        {
         Total++;
         if (OrderType()==OP_BUYSTOP)  buys++;
         if (OrderType()==OP_SELLSTOP) sells++;
         if (OrderType()==OP_BUY)  mbuys++;
         if (OrderType()==OP_SELL) msells++;
         if (OrderType()==OP_BUYSTOP) TicketB=OrderTicket();
         if (OrderType()==OP_SELLSTOP) TicketS=OrderTicket(); 
         Ticket=OrderTicket();
         Tip   =OrderType();
         TP    =OrderTakeProfit();
         Lot   =OrderLots();
        }
     }
//============================================================================================
   // Открытие ордеров
   while ( true )                                  
     {
       if (Total== 0 )            
        {                                      
         star();
        }
       break ;                                   
     }
//============================================================================================
   while ( true )
     {
       if (Total== 2 )
        {
         if (msells== 1 )
           {
             if (buys== 1 )
              {
               if (OrderType()==OP_BUYSTOP && OrderLots()==Lots)
                 {
                  OrderDelete(Ticket);
                 }
              }
           }
        }
       if (Total== 2 )
        {
         if (mbuys== 1 )
           {
             if (sells== 1 )
              {
               if (OrderType()==OP_SELLSTOP && OrderLots()==Lots)
                 {
                  OrderDelete(Ticket);
                 }
              }
           }
        }
       break ;
     }  
//============================================================================================
   return ;
  }
//============================================================================================
//+------------------------------------------------------------------+
void star() {
   double ldStop= 0 , ldTake= 0 ;
   double pAsk=Ask+DistanceSet* Point ;
   double pBid=Bid-DistanceSet* Point ;

   if (StopLoss!= 0 ) ldStop=pAsk-StopLoss* Point ;
   if (TakeProfit!= 0 ) ldTake=pAsk+TakeProfit* Point ;
  SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake);

   if (StopLoss!= 0 ) ldStop=pBid+StopLoss* Point ;
   if (TakeProfit!= 0 ) ldTake=pBid-TakeProfit* Point ;
  SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake);
}

//+------------------------------------------------------------------+
//| Установка ордера                                                 |
//| Параметры:                                                       |
//|   op     - операция                                              |
//|   pp     - цена                                                  |
//|   ldStop - уровень стоп                                          |
//|   ldTake - уровень тейк                                          |
//+------------------------------------------------------------------+
void SetOrder( int op, double pp, double ldStop, double ldTake) {
   color   clOpen;
   string lsComm=GetCommentForOrder();

   if (op==OP_BUYSTOP) clOpen=clOpenBuy;
   else clOpen=clOpenSell;
   OrderSend ( Symbol (),op,Lots,pp,Slippage,ldStop,ldTake,lsComm, 0 , 0 ,clOpen);
   if (UseSound) PlaySound (NameFileSound);
}

//+------------------------------------------------------------------+
//| Генерирует и возвращает строку коментария для ордера или позиции |
//+------------------------------------------------------------------+
string GetCommentForOrder() {
   return (Name_Expert+ " " +GetNameTF( Period ()));
}

//+------------------------------------------------------------------+
//| Возвращает наименование таймфрейма                               |
//+------------------------------------------------------------------+
string GetNameTF( int TimeFrame) {
         switch (TimeFrame) {
                 case PERIOD_MN1 : return ( "Monthly" );
                 case PERIOD_W1 :   return ( "Weekly" );
                 case PERIOD_D1 :   return ( "Daily" );
                 case PERIOD_H4 :   return ( "H4" );
                 case PERIOD_H1 :   return ( "H1" );
                 case PERIOD_M30 : return ( "M30" );
                 case PERIOD_M15 : return ( "M15" );
                 case PERIOD_M5 :   return ( "M5" );
                 case PERIOD_M1 :   return ( "M1" );
                 default :                     return ( "UnknownPeriod" );
        }
}
//+------------------------------------------------------------------+
 
hoz :

O zaman neden belgeler bunu söylüyor
Tampon sayısı 8'i aşamaz
Burada net değil. Ayrıca, ana arabelleklerin sayısının .. ve hepsinin olmadığını söylemez. Tampon sayısı ve bu kadar olduğu söylenir. Bu yüzden, okuduğum gibi, yol boyunca verilen göstergenin toplam arabellek sayısına yayılması gerektiğini anlıyorum.

Hayır, gösterge arabelleklerinden bahsetmiyorum, öykünmüş gösterge arabelleklerinden bahsediyorum. Ve IndicatorCounted()'dan bir sarmalayıcıda ArrayResize(CustomBuffer, Bars) var ve en sağdaki trend çizgilerinin uçları, teklife göre yeniden çizilmelidir.

saat :

Yani bir nesne oluşturduğunuzda, işlev parametresi WindowOnDropped'dir ve bu zaten ana pencerenin göreli olduğu gibidir. Yoksa ana pencere terminaldeki en soldaki pencere mi?
Hayır, ben de ilk başta kafam karıştı. Örneğin, iki açık grafiğimiz var, euro ve altın. Yani, her ikisinin de indeksi sıfırdır. Ancak alt pencereleri varsa, birden numaralandırılırlar. Örneğin, üç hindiyi euro tablosuna, ikisini altına ve beşini de #özellik ayrı_penceresine ve hepsini farklı alt pencerelere attım. O zaman Yahudilerin pencere numaraları 0, 1, 2, 3 ve altın 0, 1, 2 olacaktır.
 

Bir sorum var. Dürüst olmak gerekirse, beyinler zaten kaynıyor. Yapabiliyorsan yardım et.

 int n= 1 , limit= 3 ;
double result; //или int result, что не столь сейчас важно
double temp[];
int start(){
         for ( int slow= 10 ; slow<= 10 *limit; slow++){
                 for ( int fast= 10 ; fast<=slow; fast++){
                         for ( int period= 1 ; period<=slow/ 10 ; period++){
                                n++; Print (n-1, ": " , slow- 9 , ", " , fast- 9 , ", " , period);
                                 //здесь идёт тестирование машки с параметрами slow, fast, period, а результаты тестирования заносим в массив:
                                 ArrayResize (temp,n); temp[n- 1 ]=result;
                        }
                }
        }
         //и находим максимальный результат:
         int max= ArrayMaximum (temp);
   return ( 0 );
}

Şimdi soru şu: Yavaş, hızlı, periyot değerleri max'tan nasıl geri yüklenir (elementin dizideki konumu nedir)? temp[] içine değerlerin girildiği sıra Print()'te verilmiştir. 3 sınır koydum, ancak herhangi bir sayı orada olabilir. İşte ilk 77 değer (limit=2):

             10 : 4 , 4 , 1    20 : 6 , 5 , 1    30 : 8 , 2 , 1    40 : 9 , 4 , 1    50 : 10 , 5 , 1    60 : 11 , 3 , 1    70 : 11 , 8 , 1
1 : 1 , 1 , 1    11 : 5 , 1 , 1    21 : 6 , 6 , 1    31 : 8 , 3 , 1    41 : 9 , 5 , 1    51 : 10 , 6 , 1    61 : 11 , 3 , 2    71 : 11 , 8 , 2
2 : 2 , 1 , 1    12 : 5 , 2 , 1    22 : 7 , 1 , 1    32 : 8 , 4 , 1    42 : 9 , 6 , 1    52 : 10 , 7 , 1    62 : 11 , 4 , 1    72 : 11 , 9 , 1
3 : 2 , 2 , 1    13 : 5 , 3 , 1    23 : 7 , 2 , 1    33 : 8 , 5 , 1    43 : 9 , 7 , 1    53 : 10 , 8 , 1    63 : 11 , 4 , 2    73 : 11 , 9 , 2
4 : 3 , 1 , 1    14 : 5 , 4 , 1    24 : 7 , 3 , 1    34 : 8 , 6 , 1    44 : 9 , 8 , 1    54 : 10 , 9 , 1    64 : 11 , 5 , 1    74 : 11 , 10 , 1
5 : 3 , 2 , 1    15 : 5 , 5 , 1    25 : 7 , 4 , 1    35 : 8 , 7 , 1    45 : 9 , 9 , 1    55 : 10 , 10 , 1    65 : 11 , 5 , 2    75 : 11 , 10 , 2
6 : 3 , 3 , 1    16 : 6 , 1 , 1    26 : 7 , 5 , 1    36 : 8 , 8 , 1    46 : 10 , 1 , 1    56 : 11 , 1 , 1    66 : 11 , 6 , 1    76 : 11 , 11 , 1
7 : 4 , 1 , 1    17 : 6 , 2 , 1    27 : 7 , 6 , 1    37 : 9 , 1 , 1    47 : 10 , 2 , 1    57 : 11 , 1 , 2    67 : 11 , 6 , 2    77 : 11 , 11 , 2
8 : 4 , 2 , 1    18 : 6 , 3 , 1    28 : 7 , 7 , 1    38 : 9 , 2 , 1    48 : 10 , 3 , 1    58 : 11 , 2 , 1    68 : 11 , 7 , 1
9 : 4 , 3 , 1    19 : 6 , 4 , 1    29 : 8 , 1 , 1    39 : 9 , 3 , 1    49 : 10 , 4 , 1    59 : 11 , 2 , 2    69 : 11 , 7 , 2
 
gyfto :

Bir sorum var. Dürüst olmak gerekirse, beyinler zaten kaynıyor. Yapabiliyorsan yardım et.

Şimdi soru şu: Yavaş, hızlı, periyot değerleri max'tan nasıl geri yüklenir (elementin dizideki konumu nedir)? temp[] içine değerlerin girildiği sıra Print()'te verilmiştir. 3 sınır koydum, ancak herhangi bir sayı orada olabilir.


"n++" maksimum sonucu kontrol ederken, maksimum ise, yavaş, hızlı vb. değerleri hatırlamanız gerekir.
 
Yavaş, hızlı için üç dizi daha (veya bir üç boyutlu) yapabilirsiniz... Daha iyi, çünkü aniden sonuçları bir şekilde sıralamak istiyorsunuz, test parametreleri her zaman kullanılabilir olacaktır.
 
Bu eylemler genellikle, örneğin, çubuk başına bir veya 10 çubuk için bir kez gerçekleştirilirse, sonuçlar için dizileri ve İnternet'te parametre değerlerine sahip üç diziyi ölçeklendirmek daha iyidir, bu döngüler arasında gezinin, dizileri dönem değerleriyle doldurun. Ardından tüm bunları tek bir döngüde kaydırın. Ardından, her şeyi sıralamak için ArrayMaximum işlevini kullanmak mümkün olacaktır. Olabildiğince hızlı çalışacak.
 
gyfto :

Hayır, ben de ilk başta kafam karıştı. Örneğin, iki açık grafiğimiz var, euro ve altın. Yani, her ikisinin de indeksi sıfırdır. Ancak alt pencereleri varsa, birden numaralandırılırlar. Örneğin, üç hindiyi euro tablosuna, ikisini altına ve beşini de #özellik ayrı_penceresine ve hepsini farklı alt pencerelere attım. O zaman Yahudilerin pencere numaraları 0, 1, 2, 3 ve altın 0, 1, 2 olacaktır.

Aynen öyle! Ben sadece hindilerle çalışmıyorum, sertifikayı okurken dikkat etmedim diyebilirsiniz. Burada her şey açık.

hediye :

Hayır, gösterge arabelleklerinden bahsetmiyorum, öykünmüş gösterge arabelleklerinden bahsediyorum. Ve IndicatorCounted()'dan bir sarmalayıcıda ArrayResize(CustomBuffer, Bars) var ve en sağdaki trend çizgilerinin uçları, teklife göre yeniden çizilmelidir.

Ve özellikle grafikte 6'dan fazla çizginin nasıl çizileceğini sordum. Hangi pencerede (0. veya diğer önemli değil). Şu anda en çok ilgilendiğim şey bu ve başlangıçta da bunu sordum.
 
Integer :

"n++" maksimum sonucu kontrol ederken, maksimum ise, yavaş, hızlı vb. değerleri hatırlamanız gerekir.

Düşünmedim.


tamsayı :
Yavaş, hızlı için üç dizi daha (veya bir üç boyutlu) yapabilirsiniz... Daha iyi, çünkü aniden sonuçları bir şekilde sıralamak istiyorsunuz, test parametreleri her zaman kullanılabilir olacaktır.

Üç boyutlu idealdir, ancak ArrayMaximum() yalnızca tek boyutlu üzerinde çalışır, bu nedenle diziyi doğrusal bir diziye indirgemeniz ve yine her şeyin nerede olduğunu bulmanız gerekir. Bende fastMax=yavaş var, sorun bu. Ve işte üç farklı dizi... Tek bir sonucum var, yani ya biri üç boyutlu ya da biri doğrusal.


tamsayı :
sonuçlar için dizileri ölçeklendir

Bu terminolojiyi bilmiyorum, lütfen açıklayın. Bir küpte doğrusal bir uzunluk sınırı dizisi oluştur?


En azından bir seçenek var. MathMax (sonuç, sonuçÖncesi) aracılığıyla.