[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 797

 

Arkadaşlar-yoldaşlar! Bu, GBPAUD ile ticaret yapmak için ROC AUDUSD ve GBPUSD'den bilgi okuyan bir mucize yudo yaratmak için 2 No'lu girişimim!! :)) Kalem testi - ilkel, ama gerçekten denemek istedim !!! Test cihazında optimizasyon yapmadan çalıştırdığımda ÇOK İYİ BAĞLANIYOR !, ancak başarıyla yüklenmeye devam ediyor... ve sonuç olarak tek bir ticaret işlemi değil. Pekala, batırdığım belli ama nerede, söyleyin plz, bilgili insanlar!!! :)) Sözde kod bu. Uzman Danışman. Normal bir özel ROC'den veri alır

 //+------------------------------------------------------------------+
//|                                                    Robot_Rocky_Rich |
//|                                                          JonsonAlla |
//|                                                    deep_ampik@bk.ru |
//+------------------------------------------------------------------+

extern double TakeProfit = 700 ;
extern double Sl = 200 ;
extern double Lots = 0.01 ;
             
//+------------------------------------------------------------------+
int start()
 {
   int cnt, ticket;
   double x1= iCustom ( "AUDUSD" , PERIOD_H1 , "ROC" , 12 , 1 , 0 );
   double x2= iCustom ( "GBPUSD" , PERIOD_H1 , "ROC" , 12 , 1 , 0 ); 
  
  
     
   /**total=OrdersTotal();
  if(total<1)//проверка количества ордеров 
   {
   if(AccountFreeMargin()<(1000*Lots))
    {
     Print("Недостаточно средств = ", AccountFreeMargin());
     return(0);  
    }**/
   if (x1<x2)
   {
    ticket= OrderSend ( "GBPAUD" ,OP_BUY,Lots,Ask, 30 ,Bid-Sl* Point ,Ask+TakeProfit* Point , "-" , 0 , 0 , Green );
     if (ticket> 0 )
     {
       if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES)) Print ( "открыта позиция BUY : " ,OrderOpenPrice());
     }
     else Print ( "Ошибка при открытии BUY позиции : " , GetLastError ());          
     return ( 0 );
   }
   if (x1>x2) 
   {
    ticket= OrderSend ( "GBPAUD" ,OP_SELL,Lots,Bid, 30 ,Ask+Sl* Point ,Bid-TakeProfit* Point , "-" , 0 , 0 , Red );
     if (ticket> 0 )
     {
       if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES)) Print ( "открыта позиция SELL : " ,OrderOpenPrice());
     }
     else Print ( "Ошибка при открытии SELL позиции : " , GetLastError ());
     return ( 0 ); 
   }
   return ( 0 );
  }
  
 
Vinin :

IndicatorCounted(), Expert Advisors'da çalışmaz. Yalnızca göstergeler içindir. Sorunu biraz genişletmeye değer olabilir. Farklı çözümler var. En basiti gösterge optimizasyonudur (ancak her zaman mümkün değildir) Hesaplamaları bir Uzman Danışmana aktarmak mümkündür, ancak yine her zaman mümkün değildir. Aslında, göstergeye bakmanız gerekiyor

Pekala, hesaplama kodunu danışmana aktarmak istiyorum, türkiye'de hesaplama kodu bir döngü ile başlar. .daha doğru olanı ile nasıl değiştirilir7

 int CountedBars=IndicatorCounted();
if (CountedBars< 0 ) CountedBars= 0 ;
if (CountedBars> 0 ) CountedBars--;
cnt = Bars - CountedBars;

for ( int i = 0 ; i < cnt ;i++)
 
obla4ko :

Arkadaşlar-yoldaşlar! Bu, GBPAUD ile ticaret yapmak için ROC AUDUSD ve GBPUSD'den bilgi okuyan bir mucize yudo yaratmak için 2 No'lu girişimim!! :)) Kalem testi - ilkel, ama gerçekten denemek istedim !!! Optimizasyon olmadan test cihazında çalıştırdığımda ÇOK İYİ ÇIKARIYOR!, ancak başarıyla yüklenmeye devam ediyor... ve sonuç olarak, tek bir ticaret işlemi değil. Pekala, batırdığım belli ama nerede, söyleyin plz, bilgili insanlar!!! :)) Sözde kod bu. Uzman Danışman. Normal bir özel ROC'den veri alır


İlkel geçmiş yükleme kontrolü ile deneyin

Dosyalar:
 
Vinin :


İlkel geçmiş yükleme kontrolü ile deneyin

Denedim - aynı şey .. :(( sadece x1 ve x2'yi karşılaştırmak doğru olmayabilir, ancak bunları bir şeye, örneğin son çubuğa eklemeniz gerekir? Göstergenin mantığına göre, danışman en az bir pozisyon açmalı ve kapatmamalı, programda kapanış sağlanmadığı için .. :)) ve bir para biriminin ROC'si her zaman diğerinin ROC'sinden daha büyüktür...

 

Belki de göstergenin çağrısı tam olarak doğru değildir. Şimdi kendim arayacağım. Sadece arabelleğin ilk değil, boş olması gerektiği anlaşılıyor.

 

Bende öyle bir gösterge yok.

 
TG :

Pekala, hesaplama kodunu danışmana aktarmak istiyorum, türkiye'de hesaplama kodu bir döngü ile başlar. .daha doğru olanı ile nasıl değiştirilir7

1. Neden?????????????????????

Ama gerçekten ihtiyacın varsa, o zaman

2. Ben, falan, ne, boş cevapta? Dedi ki - makalelerde (burada, yukarıdaki bağlantı) Kositsyn'in bu konuda bir makalesi var. Bunu kaç kez tekrarlaman gerekiyor? Belki yapacak başka bir şeyin vardır?

 
Vinin :

Bende öyle bir gösterge yok.

İşte ROC gösterge kodu

 //+------------------------------------------------------------------+
//|                                                          ROC.mq4 |
//|                                    Copyright © 2006, Robert Hill |
//+------------------------------------------------------------------+

#property  copyright "Copyright © 2006, Robert Hill"
//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 1
#property  indicator_color1  Red
//---- indicator parameters
extern int RPeriod = 12 ;
extern bool UsePercent = true;
//---- indicator buffers
double RateOfChange[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   SetIndexStyle( 0 , DRAW_LINE );
   SetIndexDrawBegin( 0 , RPeriod);
   IndicatorDigits( Digits + 1 );
//---- indicator buffers mapping
   if (! SetIndexBuffer ( 0 , RateOfChange))
       Print ( "cannot set indicator buffers!" );
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName( "ROC(" + RPeriod + ")" );
//---- initialization done
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   double ROC, CurrentClose, PrevClose;
   int counted_bars = IndicatorCounted();
//---- check for possible errors
   if (counted_bars < 0 ) 
       return (- 1 );
//---- last counted bar will be recounted
   if (counted_bars > 0 ) 
       counted_bars--;
   limit = Bars - counted_bars - RPeriod;
//---- ROC calculation
   for ( int i = 0 ; i < limit; i++)
     {
       CurrentClose = iClose( NULL , 0 , i);
       PrevClose = iClose( NULL , 0 , i + RPeriod);
       ROC = CurrentClose - PrevClose;
       //----
       if (UsePercent)
         {
           if (PrevClose != 0 )
               RateOfChange[i] = 100 * ROC / PrevClose;
         }
       else
           RateOfChange[i] = ROC;
     }   
//---- done
   return ( 0 );
  }
//+------------------------------------------------------------------+
 

"Ama kimsenin yerleri yıkamasına gerek yok mu? Yoksa gelip yıkayacağım!" (C)

İşte gösterge kodunun uzman koduna transferi.

 
obla4ko :

İşte ROC gösterge kodu


Gösterge kodunda bir hata var.