Kodlama yardımı - sayfa 722

 
Tigra :


Bu göstergede 4 haneli tırnak kullanılırken bazı sorunlar yaşanmaktadır. Ama kritik değil, sorun 4 haneli 100 seviyesine kadar ölçek, resimleri göstermeye çalıştı, doğru zamanda bakmak gözlerinizi çok yoruyor (birkaç gün sonra, ölçeği değiştirmek için bir iplik gibi olsun) 40 seviyesine kadar - mevcut değeri gösterecek olan metnin histogramlarını ve sağ köşesini görmek daha iyi olur mu?

Оставлю оригинальный текст на русском, тк возможны искажения при переводе(

э этого индикатора есть некоторые проблемы при использовании 4 значных котировок. Но это не критично, самая проблемы это масштабирование на 4 значном до уровня 100, постарался показать на картинках, разглядывать нужный момент весьма напрягает глаза( после нескольких дней, можно ли как нить поменять масштаб до уровня 40 - что бы лучше было видно гистограммы и в правом углу текстом что бы обозначалось текущее значение?

Bu boyacı değil mi?
 

Mladen,

MT5 ile çalışıyorum.

"Adım ile takip" e dönüştürmem gereken bu "basit takip fonksiyonu "na sahibim, bir ipucu verebilir misiniz?

sahip olduğum EA'da
===================
"Sondaki" girişi (puanlara göre)

=> örnek:
sondaki: 4000 (4 puan)
(eski yöntem) fiyat hareket ettirilirse 4 puan hareket durdurma kaybı 4 puan

ama değiştirmem gerekiyor

===================
"Puan cinsinden Takip (Mesafe)" girişi
"Puan olarak takip (Adım)" girişi

=> örnek:
takip mesafesi: 4000 (4 puan)
son adım : 1500 (1,5 puan)

(yeni yöntem) fiyat hareket ettirilirse 4 puan hareket durdurma kaybı 1,5 puan

//+------------------------------------------------------------------+
//| Simple Trailing function                                         |
//+------------------------------------------------------------------+
void fSimpleTrailing(){
   if (Trailing<= 0 ){
       return ;
   }        
   if (!Pos.Select( _Symbol )){
       return ;
   }        
   if (!Sym. RefreshRates ()){
       return ;  
   }  
   double nsl,tmsl,psl;  
   switch (Pos.PositionType()){
       case POSITION_TYPE_BUY :
         nsl=Sym.NormalizePrice(Sym. Bid ()- _Point *Trailing);
             if (nsl>=Sym.NormalizePrice(Pos.PriceOpen())){
               if (nsl>Sym.NormalizePrice(Pos.StopLoss())){
                  tmsl=Sym.NormalizePrice(Sym. Bid ()- _Point *Sym.StopsLevel());
                     if (nsl<tmsl){
                        Trade.PositionModify( _Symbol ,nsl,Pos.TakeProfit());
                     }
               }
            }
       break ;
       case POSITION_TYPE_SELL :
         nsl=Sym.NormalizePrice(Sym. Ask ()+ _Point *Trailing);
             if (nsl<=Sym.NormalizePrice(Pos.PriceOpen())){
               psl=Sym.NormalizePrice(Pos.StopLoss());
                   if (nsl<psl || psl== 0 ){
                     tmsl=Sym.NormalizePrice(Sym. Ask ()+ _Point *Sym.StopsLevel());
                         if (nsl>tmsl){
                           Trade.PositionModify( _Symbol ,nsl,Pos.TakeProfit());
                        }
                  }
            }      
       break ;
   }
}
 
nbtrading :
Bu boyacı değil mi?

Evet, anlatıyor ama bu göstergede renk önemli değil, benim için çok iyi gösteriyor.
 
baraozemo :

Mladen,

MT5 ile çalışıyorum.

"Adım ile takip" e dönüştürmem gereken bu "basit takip fonksiyonu"na sahibim, bir ipucu verebilir misiniz?

sahip olduğum EA'da
===================
"Sondaki" girişi (puanlara göre)

=> örnek:
sondaki: 4000 (4 puan)
(eski yöntem) fiyat hareket ettirilirse 4 puan hareket durdurma kaybı 4 puan

ama değiştirmem gerekiyor

===================
"Puan cinsinden Takip (Mesafe)" girişi
"Puan cinsinden takip (Adım)" girişi

=> örnek:
takip mesafesi: 4000 (4 puan)
son adım : 1500 (1,5 puan)

(yeni yöntem) fiyat hareket ettirilirse 4 puan hareket durdurma kaybı 1,5 puan

//+------------------------------------------------------------------+
//| Simple Trailing function                                         |
//+------------------------------------------------------------------+
void fSimpleTrailing(){
   if (Trailing<= 0 ){
       return ;
   }        
   if (!Pos.Select( _Symbol )){
       return ;
   }        
   if (!Sym. RefreshRates ()){
       return ;  
   }  
   double nsl,tmsl,psl;  
   switch (Pos.PositionType()){
       case POSITION_TYPE_BUY :
         nsl=Sym.NormalizePrice(Sym. Bid ()- _Point *Trailing);
             if (nsl>=Sym.NormalizePrice(Pos.PriceOpen())){
               if (nsl>Sym.NormalizePrice(Pos.StopLoss())){
                  tmsl=Sym.NormalizePrice(Sym. Bid ()- _Point *Sym.StopsLevel());
                     if (nsl<tmsl){
                        Trade.PositionModify( _Symbol ,nsl,Pos.TakeProfit());
                     }
               }
            }
       break ;
       case POSITION_TYPE_SELL :
         nsl=Sym.NormalizePrice(Sym. Ask ()+ _Point *Trailing);
             if (nsl<=Sym.NormalizePrice(Pos.PriceOpen())){
               psl=Sym.NormalizePrice(Pos.StopLoss());
                   if (nsl<psl || psl== 0 ){
                     tmsl=Sym.NormalizePrice(Sym. Ask ()+ _Point *Sym.StopsLevel());
                         if (nsl>tmsl){
                           Trade.PositionModify( _Symbol ,nsl,Pos.TakeProfit());
                        }
                  }
            }      
       break ;
   }
}
Fiyat şuna göre değişirse: ne?
 
mladen :
Fiyat şuna göre değişirse: ne?

sahip olduğunuz işlevi çağırmadan önce

fiyat "artıyor" ise, "mesafeyi" puan olarak kontrol edersiniz.. "mesafe" ile eşleşiyorsa, adım (puan olarak) kullanarak stoploss hareket ettirirsiniz.

misal:

durma kaybı =8000
takip mesafesi = 4000
takip eden adım = 2000

10000 fiyatına satın alırsın

şimdi fiyat 14000 (sondaki mesafe hedefine ulaşıldı = 4000), şimdi stoploss'u 6000'e taşımanız gerekiyor (8000 - son adım)

şimdi fiyat 18000 (sondaki mesafe hedefine ulaşıldı=4000 ), şimdi stoploss'u 2000'e taşımanız gerekiyor (6000 - son adım)

şimdi fiyat 22000 (sondaki mesafe hedefine ulaşıldı=4000), şimdi stoploss'u "giriş" + 2000'e taşımanız gerekiyor (2000 - takip eden adım =-2000)

şimdi fiyat 24000 (sondaki mesafe hedefine ulaşıldı=4000), şimdi stoploss'u "giriş" + 6000'e taşımanız gerekiyor (-2000 - takip eden adım =-6000)

 
baraozemo :

sahip olduğunuz işlevi çağırmadan önce

fiyat "artıyor" ise, "mesafeyi" puan olarak kontrol edersiniz.. "mesafe" ile eşleşiyorsa, adım (puan olarak) kullanarak stoploss hareket ettirirsiniz.

misal:

durma kaybı =8000
takip mesafesi = 4000
takip eden adım = 2000

10000 fiyatına satın alırsın

şimdi fiyat 14000 (sondaki mesafe hedefine ulaşıldı = 4000), şimdi stoploss'u 6000'e taşımanız gerekiyor (8000 - son adım)

şimdi fiyat 18000 (sondaki mesafe hedefine ulaşıldı=4000 ), şimdi stoploss'u 2000'e taşımanız gerekiyor (6000 - son adım)

şimdi fiyat 22000 (sondaki mesafe hedefine ulaşıldı=4000), şimdi stoploss'u "giriş" + 2000'e taşımanız gerekiyor (2000 - takip eden adım =-2000)

şimdi fiyat 24000 (sondaki mesafe hedefine ulaşıldı=4000), şimdi stoploss'u "giriş" + 6000'e taşımanız gerekiyor (-2000 - takip eden adım =-6000)

Evet, ama kaydettirmiyorsanız (genellikle zararı durdur veya kar al fiyatlarında olduğu gibi: değiştiklerinde başka bir değişiklik için kriter olmaya başlarlar) bunu değişkenlerde bulundurmak zorunda kalırsınız ve bu hata kanıtı dışında bir şey. Denediğiniz şey kod tarafından tekrarlanamaz veya her durum için bu durakları sabit kodlamanız gerekir, bu da sabit kodlanmış fiyatlar ile tam olarak aynı olmayan herhangi bir açık fiyat için kullanılamaz hale getirir.
 

Merhaba,

Ok çizen bir fonksiyon yazmak istiyorum. Okun yüzmesini isterim . Herhangi bir fikir? :)

void DrawArrow(string name, int IdSymbol, int x, int y, int width, int corner, color clr)
{
   ObjectCreate(0,name,OBJ_ARROW,0,0,0,0,0);
      ObjectSetInteger(0,name,OBJPROP_ARROWCODE,IdSymbol);
      ObjectSetInteger(0,name,OBJPROP_CORNER,corner);
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
      ObjectSetInteger(0, name, OBJPROP_COLOR, clr);
      ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
      ChartRedraw(0);
}

 
mladen :
Evet, ama kaydettirmiyorsanız (genellikle zararı durdur veya kar al fiyatlarında olduğu gibi: değiştiklerinde başka bir değişiklik için kriter olmaya başlarlar) bunu değişkenlerde bulundurmak zorunda kalırsınız ve bu hata kanıtı dışında bir şey. Denediğiniz şey kod tarafından tekrarlanamaz veya her durum için bu durakları sabit kodlamanız gerekir, bu da sabit kodlanmış fiyatlar ile tam olarak aynı olmayan herhangi bir açık fiyat için kullanılamaz hale getirir.

merhaba mladen,

işte örnek-ea

Dosyalar:
sample-ea.mq5  36 kb
 
Tartut :

Merhaba,

Ok çizen bir fonksiyon yazmak istiyorum. Okun yüzmesini isterim . Herhangi bir fikir? :)

void DrawArrow(string name, int IdSymbol, int x, int y, int width, int corner, color clr)
{
   ObjectCreate(0,name,OBJ_ARROW,0,0,0,0,0);
      ObjectSetInteger(0,name,OBJPROP_ARROWCODE,IdSymbol);
      ObjectSetInteger(0,name,OBJPROP_CORNER,corner);
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
      ObjectSetInteger(0, name, OBJPROP_COLOR, clr);
      ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
      ChartRedraw(0);
}

"Yüzer" ok ne anlama geliyor?

Not: ok nesneleri x ve y koordinatlarını veya köşeyi kullanmıyor. Zamanı ve fiyatı kullanıyorlar

 

merhaba bay mladen

lütfen MTF yap

saygınlık

Dosyalar: