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

 
dmmikl86 >> :

uv. forum kullanıcıları!

Bir gösterge yazdım - ve sorun şu ki hareketli ortalama (Buf_2) çizilmiyor, işte kod:

sorunun ne olduğunu anlamama yardım et?

Ve //ortalama i<0'dan sonra döngüye girmezseniz neden çizilsin, yoksa önceki döngüden çıkmayacaksınız

 i + + ; // поставьте здесь увеличение на один и всё заработает или присвойте i=0; напрямую ноль
//====================================================================
// average
int n = 0 ;
   while ( i > = 0 ) 
       {   
       //----
       while ( n < = average ) {
         Buf_2 [ i ] = Buf_1 [ i - n ] ;
         n + + ;
         }
       
       i - - ;
       //----
       }

//----
   return ( 0 ) ;
   }
//+------------------------------------------------------------------+
 

Güzel gün)


Sıkıntı için özür dilerim, bu soruyu zaten sordum ama cevabı anlamadım (genel olarak, bir hafta içinde hiçbir şey değişmedi


Bekleyen bir sipariş vermek için nasıl bir fonksiyon yazacağımı söyle?


Teklif Ver veya Sor yerine NE SÜRÜYOR? Mumlardan birinin Yüksek'i için gecikmeye ihtiyacım var. Bu değeri alıyorum ve bunu fonksiyona nasıl girebilirim? Sonuçta, bu fiyat ticaret akışında olmayabilir? Genel olarak, erteleyiciyi ayarlamak için kodu gönderebilir misiniz, asıl mesele onu kurmanın fiyatını nereden alacağınızdır?!!

 

Örneğin (satın alma durağı ayarlama örneği):

(Gecikme ayarlamak için kurulum fiyatının teklif akışında olması kesinlikle gerekli değildir.

Mevcut fiyattan dans edebilir veya herhangi bir fiyatı alabilirsiniz, böylece sadece bu DC'de izin verilen durdurma seviyesi gözlemlenir, MEVCUT FİYATTAN GECİKMEYİ AYARLAMA FİYATIna kadar)

( 'EURUSD - Eğilimler, Tahminler ve Etkiler' )

 extern int      Magic = 77777 ;
extern int      StopLoss = 400 ;
extern int      TakeProfit = 120 ;
extern double   Lots = 0.1 ;

static int prevtime = 0 ;
//-- Подключаемые модули --
#include <stderror.mqh>
#include <stdlib.mqh>


//=======================================================
int start ( )
{
if ( Time [ 0 ] = = prevtime )   return ( 0 ) ; //ждём появления нового бара
   prevtime = Time [ 0 ] ; //если появился новый бар , включаемся
   

//-----------------------------------------------------------------------
if ( NumberOfOrders ( NULL , OP_BUYSTOP , Magic ) < 1 )  { //если нет открытых бай- поз.
if   ( NumberOfPositions ( NULL , OP_BUY , Magic ) < 1 )  { //если нет ордеров байстоп
double priceBUY = iHigh ( NULL , 0 , iHighest ( NULL , 0 , MODE_HIGH , 50 , 0 ) ) ; //-задаем цену
// установки  ордера по максимуму из посл. 50-ти свечей
double SL = 0 ; double TP = 0 ;//выставляем стопы
if ( StopLoss > 0 )   SL = priceBUY - Point * StopLoss ;
if ( TakeProfit > 0 ) TP = priceBUY + Point * TakeProfit ;  
//ставим ордер 
ticket = OrderSend ( Symbol ( ) , OP_BUYSTOP , Lots , price , 5 , SL , TP , "байстоп" , Magic , 0 , Blue ) ;
if ( ticket < 0 ) { Print ( "Ошибка открытия ордера BUY #" , GetLastError ( ) ) ; 
               Sleep ( 10000 ) ;   return ( 0 ) ; }
} }
//--------------------------------------------------------------------------

Аналогично ставится селл-стоп


//----------------------------------------------------------------------------
return ( 0 ) ;
 //-----------------Конец функции int start()----
} //int start()

//--------ставим пользовательские функции -------------

Yerine

çift fiyatAL=....... ....

formülünüzü girin

 

Özü şu olan bir gösterge yazıyorum: şamdan boğa ise, gösterge çizgisi düşüştür. iyi, tüm bunlara hacim eklenir (böylece her mum hacmin ağırlığına sahiptir). Ve ikinci satır, mevcut hattan hareketli ortalamadır.

 #property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red

extern int average = 14 ;
//---- buffers
double Buf_1 [ ] , Buf_2 [ ] ;
double sum_b ;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init ( )
  {
//---- indicators
   SetIndexStyle ( 0 , DRAW_LINE ) ;
   SetIndexBuffer ( 0 , Buf_1 ) ;
   SetIndexStyle ( 1 , DRAW_LINE ) ;
   SetIndexBuffer ( 1 , Buf_2 ) ;
   
   sum_b = 0.0 ;
//----
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit ( )
  {
//----
   
//----
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start ( )
  {
   int    i , 
          Counted_bars = IndicatorCounted ( ) ;

int n = 0 ;
//----
//====================================================================
// график тела с объемом

i = Bars - Counted_bars - 1 ;           // Индекс первого непосчитанного
   while ( i > = 0 ) 
      {  
       //----
       if ( Close [ i ] > Open [ i ] ) {
         sum_b = sum_b + ( Close [ i ] - Open [ i ] ) * Volume [ i ] ;
         Buf_1 [ i ] = sum_b ;
         }
         
       if ( Close [ i ] < Open [ i ] ) {
         sum_b = sum_b - ( Open [ i ] - Close [ i ] ) * Volume [ i ] ;
         Buf_1 [ i ] = sum_b ;
         }
         
       if ( NormalizeDouble ( Close [ i ] , Digits ) = = NormalizeDouble ( Open [ i ] , Digits ) ) {
         Buf_1 [ i ] = Buf_1 [ i - 1 ] ;
         }
       
       // average  
       while ( n < = average ) {
         Buf_2 [ i ] = Buf_1 [ i - n ] ;
         n + + ;
         }

       i - - ;
       //----
      }
//====================================================================


//----
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+
problemler: ana hat, atlatmanın oluşumu sırasında zirveler çiziyor ve hareketli ortalama çizilmiyor mu?
 
dmmikl86 >> :

Özü şu olan bir gösterge yazıyorum: şamdan yükselişteyse, gösterge çizgisi düşüşte. iyi, tüm bunlara hacim eklenir (böylece her mum hacmin ağırlığına sahiptir). Ve ikinci satır, mevcut hattan hareketli ortalamadır.

problemler: ana hat, atlatmanın oluşumu sırasında zirveler çiziyor ve hareketli ortalama çizilmiyor mu?


if bloğu daha verimli bir blokla değiştirilebilir

 if ( Close [ i ] > Open [ i ] ) {
         sum_b = sum_b + ( Close [ i ] - Open [ i ] ) * Volume [ i ] ;
         Buf_1 [ i ] = sum_b ;
}
else if ( Close [ i ] < Open [ i ] ) {
         sum_b = sum_b - ( Open [ i ] - Close [ i ] ) * Volume [ i ] ;
         Buf_1 [ i ] = sum_b ;
}
else {    //       if (NormalizeDouble(Close[i],Digits)==NormalizeDouble(Open[i],Digits)) {
         Buf_1 [ i ] = Buf_1 [ i + 1 ] ;
}

[i + 1] - çünkü Dizin dizileri sağdan sola doğru numaralandırılmıştır. Artık sıfır gövdeli mumlar doğru şekilde işlenecek.

Orta satır buf_2 ile, yazarın ne istediği koddan hiç belli değil .


 
OneDepo >> :

if bloğu daha verimli bir blokla değiştirilebilir

[i + 1] - çünkü Dizin dizileri sağdan sola doğru numaralandırılmıştır. Artık sıfır gövdeli mumlar doğru şekilde işlenecek.

Orta satır buf_2 ile, yazarın ne istediği koddan hiç belli değil .


Göstergenin değeri üzerine inşa edilmiş, 14 periyotlu hareketli bir ortalama olmasını istedim.

 
dmmikl86 >> :

Göstergenin değeri üzerine inşa edilmiş, 14 periyotlu hareketli bir ortalama olmasını istedim.

Sonra şöyle:

 //+------------------------------------------------------------------+
//|                                                     dmmikl86.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red

extern int BarsCount = 1000 ;
extern int average = 14 ;

//---- buffers
double Buf_1 [ ] , Buf_2 [ ] ;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init ( )
   {
     if ( average < 1 )
        average = 1 ;

     //---- indicators
     SetIndexStyle ( 0 , DRAW_LINE ) ;
     SetIndexBuffer ( 0 , Buf_1 ) ;
     SetIndexStyle ( 1 , DRAW_LINE ) ;
     SetIndexBuffer ( 1 , Buf_2 ) ;
     //----
     return ( 0 ) ;
   }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit ( )
   {
//----
//----
   return ( 0 ) ;
   }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start ( )
{
     int i , n ;

     //====================================================================
     // график тела с объемом
     double s , sum_b = 0 ;

     int limit = BarsCount ;
     if ( limit > Bars )
        limit = Bars ;

     for ( i = limit ; 0 < = i ; i - - ) {

         if ( Close [ i ] > Open [ i ] ) {
            sum_b + = ( Close [ i ] - Open [ i ] ) * Volume [ i ] ;
            Buf_1 [ i ] = sum_b ;
         }
         else if ( Close [ i ] < Open [ i ] ) {
            sum_b - = ( Open [ i ] - Close [ i ] ) * Volume [ i ] ;
            Buf_1 [ i ] = sum_b ;
         }
         else {
            Buf_1 [ i ] = Buf_1 [ i + 1 ] ;
         }

         // SMA calculation
         if ( i + average < limit ) {
            s = 0 ;
             for ( n = 0 ; n < average ; n + + ) {
                s + = Buf_1 [ i + n ] ;
             }
            Buf_2 [ i ] = s / average ;
         }

     }

     return ( 0 ) ;
   }
//+------------------------------------------------------------------+
 
bar başına bir anlaşma yapılması için nasıl yapılır, bu çubukta daha önce bir anlaşma varsa bu çubukta daha fazla sipariş açılmaz?
 
Sadece bu konuya bak.
 
Vinin >> :
Sadece bu konuya bak.

Veya Kovalev'in ders kitabındaki 27. sorunu okuyun. Kod örnekleri ve nasıl çalıştığına dair ayrıntılı bir açıklama var.