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

 
lottamer :

söyle pliz ...koşul if=true ise if serisinden nasıl çıkılır?

Eğer

Eğer

if (DOĞRU) - ancak her şeye yeniden başlamanız ve merdivenlerden yukarı çıkmamanız gerekiyor

Eğer

Eğer

......


Eğer

Eğer

if (DOĞRU) - ancak her şeye yeniden başlamanız ve merdivenlerden yukarı çıkmamanız gerekiyor

başka {

Eğer

Eğer

......

}// if (DOĞRU) - ancak her şeye yeniden başlamanız ve merdivenlerden yukarı çıkmamanız gerekiyor

Aslında, vakaların yaklaşık %99,9'unda bu, algoritmanın uygulanması hakkında yeterince düşünmediğiniz anlamına gelir.

 
VladislavVG :

Eğer

Eğer

if (DOĞRU) - ancak her şeye yeniden başlamanız ve merdivenlerden yukarı çıkmamanız gerekiyor

başka {

Eğer

Eğer

......

}// if (DOĞRU) - ancak her şeye yeniden başlamanız ve merdivenlerden yukarı çıkmamanız gerekiyor

Aslında, vakaların yaklaşık %99,9'unda bu, algoritmanın uygulanması hakkında yeterince düşünmediğiniz anlamına gelir.


:)) zaten bir çıkış yolu bulmuş gibi görünüyor

dönüş (0) - ve mucizevi bir şekilde hepsinden çıkarsa

 
VladislavVG :

Eğer

Eğer

if (DOĞRU) - ancak her şeye yeniden başlamanız ve merdivenlerden yukarı çıkmamanız gerekiyor

başka {

Eğer

Eğer

......

}// if (DOĞRU) - ancak her şeye yeniden başlamanız ve merdivenlerden yukarı çıkmamanız gerekiyor

Aslında, vakaların yaklaşık %99,9'unda bu, algoritmanın uygulanması hakkında yeterince düşünmediğiniz anlamına gelir.

}, else, return veya break veya Continue (döngüler için) ile.
 
rigonich :

Mevduat para birimindeki kâr almanın boyutu , OrderProfit() işlevi tarafından puan cinsinden döndürülür - kapanış fiyatı eksi açılış fiyatı ve son kapatılan pozisyonun nasıl bulunacağı veya bunun için hazır bir fonksiyonun nereden alınacağı birkaç kez açıkladım, bence, sadece sizin için.


kesinlikle. Önce son kapatılan GetTicketLastPos pozisyonunun biletini almalı ve ardından bu bileti standart fonksiyonları kullanarak ihtiyacınız olanı çıkarmak için kullanmalısınız.

teşekkür etmek.

 
xant :

rigonik

Sonunda mantıklı gelmeye başladı. Bu nedenle, küme parantezlerindeki kısa satırlar işlev çağrılarıdır ve işlevlerin kendilerinin bir yere yerleştirilmesi gerekir.

Şimdi sırayla.

init için ilk fonksiyona bir çağrı ekliyorum, bunu init fonksiyonu başlatıldıktan hemen sonra yapıyorum yani bu şekilde doğru olacak değil mi?

benzer şekilde, başlangıç bloğuna ikinci bir işlev çağrısı ekliyorum. Bunu değişkenler hesaplandıktan hemen sonra yaparsam doğru olur mu? Örneğin şöyle:

Bu ilk 2 adım doğru mu?

Aslında bunun için ona hemen teşekkür ettim.


Hemen hemen. İnit'te, aramayı yapmadan önce sahip olduğunuz ilk {'i kaldırın, başlangıçta - hem {}, hem aramadan önce hem de sonra duruyor. Şimdi sadece işlev kodunu kopyalamak, tüm danışmanınızın kodunun arkasına yerleştirmek ve danışmanı derleyin.

Üzgünüm, bir hata yaptım, gözlerinizle kod olmadığında zor, o kadar.

 int init()
{
fGet_MineGV();
//... и далее мой код, который был ранее (без первой  { )
 

rigonik

Parantezleri çift sayıda parantez bırakmak için kaldırdım. Yani, her iki işlev de küme parantezleri olmadan eklenir.

Şu şekilde çıktı:

 int init()
{
    fGet_MineGV();
//... и далее мой код
 //...разрыв кода...
if ((SUA== 100 )&&(zigNN> 4.5 ))
{
BUA= 0 ;
BUA1= 0 ;
}

fSave_MineGV();
//... продолжение моего кода...

Ardından, danışmanın tüm kodunun ardından ekledim

}
}
}


Comment(fd+f+d);

}
//... тут мой советник закончился


         void fGet_MineGV ( string fs_PrefName = "" ) // префикс имени переменной
     {
         string ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_1" );
         if ( GlobalVariableCheck (ls_Name)) SUA = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_2" );
         if ( GlobalVariableCheck (ls_Name)) SUA1 = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_3" );
         if ( GlobalVariableCheck (ls_Name)) BUA = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_4" );
         if ( GlobalVariableCheck (ls_Name)) BUA1 = GlobalVariableGet (ls_Name);
     }
               
       void fSave_MineGV ( string fs_PrefName = "" ) // префикс имени переменной
{
 static datetime ldt_NewBar;
 datetime ldaTBeginBar = iTime ( Symbol (), 1 , 0 )
 //---- Сохраняемся в начале каждой минуты
 if (ldt_NewBar == ldaTBeginBar) return ;
 ldt_NewBar = ldaTBeginBar;
 //---- Сохраняем поочереди значения каждой переменной
 string ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_1" );
 GlobalVariableSet (ls_Name, SUA);
 ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_2" );
 GlobalVariableSet (ls_Name, SUA1);
 ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_3" );
 GlobalVariableSet (ls_Name, BUA);
 ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_4" );
   GlobalVariableSet (ls_Name, BUA1);
}

Koddan sonra bunu anlıyorum - son kaşlı ayraçtan sonra, aslında tavsiyeden ayrı. Böyle?

Doğruysa, derlemeden sonra ürettiği şey budur:

'fGet_MineGV' - function already defined and has a body         K:\TEST\experts\01___AUDUSD.mq4 (1679, 14)
'ls_Name' - variable already defined                            K:\TEST\experts\01___AUDUSD.mq4 (1681, 16)
2 error(s), 0 warning(s)        

Извиняюсь, ошибся, сложно, когда нет кода пнред глазами.Вот так.
Kod kısa olsaydı buraya yazardım ve tüm sorunlarım çabucak çözülürdü. AMA EA'da 1700 satır ve ayrıca hesaplamanın çoğunun yapıldığı 3 harici gösterge daha var ... Yani sadece posta yoluyla, ancak bu açıkça ücretsiz olarak yapılmamaktadır.
 
xant :

rigonik

Parantezleri çift sayıda parantez bırakmak için kaldırdım. Yani, her iki işlev de küme parantezleri olmadan eklenir.

Şu şekilde çıktı:

Ardından, danışmanın tüm kodunun ardından ekledim

Koddan sonra bunu anlıyorum - son kaşlı ayraçtan sonra, aslında tavsiyeden ayrı. Böyle?

Doğruysa, derlemeden sonra ürettiği şey budur:


Bu uyarılar, EA'nızdaki işlev ve değişkenin daha önce tanımlandığını söylüyor. Bakın daha önce yapıştırdığınız kodu silmeyi unuttunuz mu? değilse, bana baykuş kodunu gönderin, ben de ona işlevler ekleyeceğim.
 
lottamer :


kesinlikle. Önce son kapatılan GetTicketLastPos pozisyonunun biletini almalı ve ardından bu bileti standart fonksiyonları kullanarak ihtiyacınız olanı çıkarmak için kullanmalısınız.

teşekkür etmek.


lanet olsun... son kapatılan pozisyonun böyle bir fonksiyon bileti yok,

son açık pozisyonun bir bileti var GetTicketLastPos ...

 
xant :

rigonik

Parantezleri çift sayıda parantez bırakmak için kaldırdım. Yani, her iki işlev de küme parantezleri olmadan eklenir.

Şu şekilde çıktı:

Ardından, danışmanın tüm kodunun ardından ekledim

Koddan sonra bunu anlıyorum - son kaşlı ayraçtan sonra, aslında tavsiyeden ayrı. Böyle?

Doğruysa, derlemeden sonra ürettiği şey budur:

Kod kısa olsaydı buraya yazardım ve tüm sorunlarım çabucak çözülürdü. AMA EA'da 1700 satır ve ayrıca hesaplamanın çoğunun yapıldığı 3 harici gösterge daha var ... Yani sadece posta yoluyla, ancak bu artık ücretsiz olarak yapılmıyor.

Bu şekilde daha net olacağını düşünüyorum:

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


double Var1, Var2, Var3, Var4; // 4-ре переменных для сохранения (у Вас они свои !!!)
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   fGet_MineGV();
//----
//Здесь ваш код
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   //Здесь ваш код
//----
   fSave_MineGV();
   return ( 0 );
  }
//+------------------------------------------------------------------+
void fSave_MineGV ( string fs_PrefName = "" )     // префикс имени переменной
  {
     static datetime ldt_NewBar;
     datetime ldaTBeginBar = iTime ( Symbol (), 1 , 0 );
//----
     //---- Сохраняемся в начале каждой минуты
     if (ldt_NewBar == ldaTBeginBar) return ;
    ldt_NewBar = ldaTBeginBar;
     //---- Сохраняем поочереди значения каждой переменной
     string ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_1" );
     GlobalVariableSet (ls_Name, Var1);
    ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_2" );
     GlobalVariableSet (ls_Name, Var2);
    ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_3" );
     GlobalVariableSet (ls_Name, Var3);
    ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_4" );
     GlobalVariableSet (ls_Name, Var4);
//----
  }
void fGet_MineGV ( string fs_PrefName = "" )     // префикс имени переменной
  {
     string ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_1" );
//----
     //---- Восстанавливаем значения переменных
     if ( GlobalVariableCheck (ls_Name)) Var1 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_2" );
     if ( GlobalVariableCheck (ls_Name)) Var2 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_3" );
     if ( GlobalVariableCheck (ls_Name)) Var3 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_4" );
     if ( GlobalVariableCheck (ls_Name)) Var4 = GlobalVariableGet (ls_Name);
  }  
//----
 
lottamer :


kahretsin... son kapatılan pozisyonun böyle bir fonksiyon bileti yok,

son açık pozisyonun bir bileti var GetTicketLastPos ...


Son kapatılan bilet tarihtedir.