Kodlama yardımı - sayfa 778

 

Birisi bana bu kodu nasıl kısaltacağımı gösterebilir mi? Bunun için döngü için nasıl kullanılır?

extern double S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15;
if (S1== 1234 ) S1= DoubleToString (S1);
if (S2== 1234 ) S2= DoubleToString (S2);
if (S3== 1234 ) S3= DoubleToString (S3);
if (S4== 1234 ) S4= DoubleToString (S4);
if (S5== 1234 ) S5= DoubleToString (S5);
if (S6== 1234 ) S6= DoubleToString (S6);
if (S7== 1234 ) S7= DoubleToString (S7);
if (S8== 1234 ) S8= DoubleToString (S8);
if (S9== 1234 ) S9= DoubleToString (S9);

Bunun gibi bir şey isterdim ama değişken adlarını nasıl değiştireceğimi bilmiyorum.

 for (i= 1 ; i<=9; i++){
if (S+i== 1234 ) S+i= DoubleToString (S+i);
}
 
Karel Nagel :

Birisi bana bu kodu nasıl kısaltacağımı gösterebilir mi? Bunun için döngü için nasıl kullanılır?

Bunun gibi bir şey isterdim ama değişken adlarını nasıl değiştireceğimi bilmiyorum.

MQL'nin sınırlamaları nedeniyle bir diziyi girdi listesiyle başlatamazsınız. (Yalnızca { 2, 5, 3.1 } gibi sabit ifadeler yeterli olacaktır.)

Ancak yine de çiftleri dizelere dönüştürmeniz gerektiğinden, StringFormat kullanabilirsiniz. Bu işlevle ilgili ilginç olan şey, keyfi sayıda argümanı kabul etmesidir.

StringSplit'in yardımıyla anında bir dizi oluşturmak için kullanılabilir:

 string line= StringFormat ( "%g %g %g %g %g %g %g %g %g" ,S1,S2,S3,S4,S5,S6,S7,S8,S9);
string numbers[];
int count= StringSplit (line, ' ' ,numbers);
for ( int i= 0 ; i<count; i++)
  {
   if (numbers[i]== "1234" ) Print ( " S" ,i+ 1 , " == 1234" );
  }
 
rsiArray[ 0 ] = iRSI ( NULL , 0 , 10 , PRICE_CLOSE , 1 );
rsiArray[ 1 ] = iRSI ( NULL , 0 , 10 , PRICE_CLOSE , 2 );
rsiArray[ 2 ] = iRSI ( NULL , 0 , 10 , PRICE_CLOSE , 3 );
rsiArray[ 3 ] = iRSI ( NULL , 0 , 10 , PRICE_CLOSE , 4 );
rsiArray[ 4 ] = iRSI ( NULL , 0 , 10 , PRICE_CLOSE , 5 );
ArraySetAsSeries (rsiArray, true ); 

upperEnv = iEnvelopesOnArray(rsiArray, 0 , 5 , MODE_SMA , 0 , 5 , MODE_UPPER, 0 );
lowerEnv = iEnvelopesOnArray(rsiArray, 0 , 5 , MODE_SMA , 0 , 5 , MODE_LOWER, 0 ); 

Bunu çok uzun zamandır çözmeye çalışıyorum, yardıma ihtiyacım var.

Zarf değerleri, rsiArray[0] veya grafiklerde gördüğüm herhangi bir değere karşılık gelmiyor ve nedenini anlayamıyorum.


Herhangi bir fikir?


teşekkürler

EDIT: (düzeltildi) tamam, tek yapmam gereken mt4'ü yeniden başlatmaktı ve kod iyi çalıştı.

 

Bir EA/yardımcı yazılımın doğru çalışması için saatler harcadım ve beynim uyuşana kadar birkaç değişiklik yaptım. Ekli bir ön sürümdür ve açık bir alım/satım emri eklendiğinde alarm ve açık bir alım/satım emri kapatıldığında farklı bir alarm çalmak olan doğru çalışma engelini aştığımda onu geliştireceğim. Bu sürüm bazen çalışıyor ve bazen bu noktada çok güvenilmez değil.


 //+------------------------------------------------------------------+
//|               myNotify.mq4                                       |
//|               Notify me by sound file of change in orders        |
//+------------------------------------------------------------------+

//---- input parameters
extern string OrderClosedWav = "OrderClosed.wav" ;
extern string OrderOpenedWav = "OrderOpened.wav" ;
string sVersion = "1.39" ;
int iOld, iNew = 0 ;
int i = 0 ;
uchar ii = 0 ;
long NewOrdersHash = 0 ;
long OldOrdersHash = 0 ;

int nOrders = 0 ;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
// +------------------------------------------------------------------+
// |  expert deinitialization function                                |
// +------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+

int start()
{ 
    nOrders = 0 ;
    NewOrdersHash = 0 ;

//First Pass
     for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
       {
         OrderSelect (i, SELECT_BY_POS);
         if (OrderType() < 2 )           // NOT "OP_BUYLIMIT" || "OP_BUYSTOP" //|| "OP_SELLLIMIT" || "OP_SELLSTOP")
         {
           NewOrdersHash = NewOrdersHash + OrderTicket();
           nOrders++;
         } 
       } 

OldOrdersHash = NewOrdersHash;
iOld =nOrders;

     Comment ( "Ver " ,sVersion, " \n" ,
         iOld, "\n" , iNew, "\n\n" , ii, "\n\n" ,
         OrderOpenedWav, "\n" ,
         OrderClosedWav, "\n\n" ,
         "Old:  " ,OldOrdersHash, "\n" ,
         "New: " ,NewOrdersHash, "\n\n" ,
         nOrders, "\n" );
// Wait
         Sleep ( 2000 );

//Second Pass to compare after short pause
    nOrders = 0 ;
    NewOrdersHash = 0 ;
     for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
       {
         OrderSelect (i, SELECT_BY_POS);
         if (OrderType() < 2 )           // NOT "OP_BUYLIMIT" || "OP_BUYSTOP" //|| "OP_SELLLIMIT" || "OP_SELLSTOP")
         {
           NewOrdersHash = NewOrdersHash + OrderTicket();
           nOrders++;
         } 
       } 
iNew = nOrders;

     if (ii > 24 ) {ii = 1 ;} else {ii++;}
       
     Comment ( "Ver " ,sVersion, " \n" ,
         iOld, "\n" , iNew, "\n\n" , ii, "\n\n" ,
         OrderOpenedWav, "\n" ,
         OrderClosedWav, "\n\n" ,
         "Old:  " ,OldOrdersHash, "\n" ,
         "New: " ,NewOrdersHash, "\n\n" ,
         nOrders, "\n" );
     if (OldOrdersHash != NewOrdersHash)
    {
     if (iNew > iOld)
       PlaySound (OrderOpenedWav);
     else
       PlaySound (OrderClosedWav);
    }

return ( 0 );

}  

/*
void OrdersF()
   {

    nOrders = 0;
    NewOrdersHash = 0;
    for(int i=OrdersTotal()-1;i>=0;i--)
       {
         OrderSelect(i, SELECT_BY_POS);
         if (OrderType() < 2)          
         {
           NewOrdersHash = NewOrdersHash + OrderTicket();
           nOrders++;
         } 
       } 
    iNew = nOrders;
    return;
   }
*/
//+------------------------------------------------------------------+

 

Merhaba arkadaşlar ben yeniyim. Bu gösterge üzerinde çok basit bir düzenleme yapmak istiyorum

Yatay Çizginin Açıklama kutusuna Alert_ kelimesini nasıl ve nereye koyabilirim?

otomatik olarak görünmesi için?

cevabınızı bekliyorum



 //+------------------------------------------------------------------+

//|                                              horizontal line.mq4 |
//|                                                          Wdholic |
//|                            https://www.mql5.com/en/users/wdholic |
//+------------------------------------------------------------------+
#property copyright "Wdholic"
#property link        "https://www.mql5.com/en/users/wdholic"
#property version    "1.00"
#property strict

#import "cfunctions.dll" 
int       MT4_ScreenToClient( int hWnd, int & iX[]);  
#import
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  { 
     double pmax= ChartGetDouble ( 0 , CHART_PRICE_MAX );
     double pmin= ChartGetDouble ( 0 , CHART_PRICE_MIN );
     double Ymax= ChartGetInteger ( 0 , CHART_HEIGHT_IN_PIXELS )* 1.0 ;
   //  Alert(pmin);Alert(pmax);Alert(Ymax);
   int iCoords[ 2 ] ;
     int hWin = WindowHandle( Symbol (), Period ());  
   
    MT4_ScreenToClient(hWin, iCoords);    
               
     double cory=iCoords[ 1 ]* 1.0 ;
     double range=(pmax-pmin);
    
     double XY= (cory* 1.0 )/Ymax;
       double P=pmax-XY*range;
     
        
   Line( "test_" ,P, clrAqua );
   WindowRedraw();
   return ;
  }
//+------------------------------------------------------------------+

void Line( string t, double P, color C )
{ int a= 1 ; string nm;
    nm= "line_" +t+ string (a);
   while ( ObjectFind ( 0 ,nm)== 0 ){ a++; nm= "line_" +t+ string (a);}
  
if ( ObjectFind ( 0 ,nm)< 0 ){
   ObjectCreate ( 0 ,nm, OBJ_HLINE , 0 , 0 , 0 ); 
  ObjectSet( nm, OBJPROP_COLOR ,C);}
  ObjectSet( nm,OBJPROP_PRICE1,P);  
  ObjectSet( nm, OBJPROP_SELECTED , 1 );  
}

 

Bunu kodlamama yardımcı olabilecek var mı? Dikdörtgeni gösterildiği gibi son 3 ayın en yüksek ve en düşük değeri olarak koymak teşekkür ederim

Dosyalar:
INDIxxx.jpg  243 kb
 

birisi önceki ma cross'ta stoploss konusunda yardım etsin



 

Merhaba,

Bir fikrim var. Ama mq4 kodunu pek bilmiyorum.

Önceki en yüksek seviye, önceki 2. en yüksek seviyenin altındadır, ardından bekleyen emri önceki en yüksek * %2 veya %1'den satın alın ve mevcut mumdaki fiyat o siparişe dokunduğunda satın alın.

Önceki düşük 2. önceki düşükten daha yüksektir, ardından bekleyen emri önceki düşük * -%2 veya -%1'den sat ve mevcut mumdaki fiyat o siparişe dokunduğunda sat.

Herhangi bir dönem. Hedef yok Zarar durdurma yok. Tam tersi gibi takip eden stoploss.

mq4 kodu yapabilen herkese minnettarım. Yardıma ihtiyacım var. Sadece MT4.

 

Merhaba ...

için bir Uzman yapabilir misiniz?   bu strateji lütfen

Takviye Uzmanı

Ayarlar :

1.     Seçenek: Yalnızca sat / Yalnızca satın al

2.     TP: 50

3.     SL: 00

4.     Adım: 150

5.     Başlangıç Lotu: 0,1

6.     Çarpma: 1.2.4.8.16 … ..

7.     Toplam siparişler: 100

8.     Sihirli Numara: 111111

çalışma yöntemi :

1-    Belirtilen lot büyüklüğüne göre başlangıçta otomatik olarak pozisyon açma .

2-    Her takviyede tüm işlemler için Tp'yi değiştirin .

Aşağıdaki denkleme göre: Son çift pozisyon için Tp, tüm değişken zararı + son pozisyonun kârını kapsar .

3-    Başlangıç partisine dön .

 

 

 
BANSINO Money Maker :

Merhaba ...

için bir Uzman yapabilir misiniz?   bu strateji lütfen

Takviye Uzmanı

Ayarlar :

1.     Seçenek: Yalnızca sat / Yalnızca satın al

2.     TP: 50

3.     SL: 00

4.     Adım: 150

5.     Başlangıç Lotu: 0,1

6.     Çarpma: 1.2.4.8.16 … ..

7.     Toplam siparişler: 100

8.     Sihirli Numara: 111111

çalışma yöntemi :

1-    Belirtilen lot büyüklüğüne göre başlangıçta otomatik olarak pozisyon açma .

2-    Her takviyede tüm işlemler için Tp'yi değiştirin .

Aşağıdaki denkleme göre: Son çift pozisyon için Tp, tüm değişken zararı + son pozisyonun kârını kapsar .

3-    Başlangıç partisine dön .

 

 

Freelance bölümünde iş olarak ilan edin.