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

 
VAM_ 08.06.2010 18:48 edit | silmek

Ses nasıl kapatılır? Beyaz bir dizine getirildi. Birçok araç penceresi vardır (33). Danışmanlar yok. Bir orta ve Zup. Nereden şarkı söylüyor anlayamıyorum. Lütfen bana yardım et. Serviste olaylar oldu. Olaylardaki haçlar yardımcı olmuyor. Her şey şarkı söylüyor, piç.

tekno


sığırcık hindide oturabilir)))

Kodu inceledim - hiçbir yerde uyarı yok! Ne yapalım?
 
VAM_ :

Kodu inceledim - hiçbir yerde uyarı yok! Ne yapalım?

PlaySound()'a bakın .
 
Global düzeyde bir değişken kümesine, programın yürütülmesi sırasında farklı işlevler çağrılırken farklı değerler atanması ve bunları kaydetmesi nasıl mümkün olur?

Bir pozisyonu kısmen kapatmak için global seviyedeki Part değişken setine belirli değerler atamam ve bunları kısmi emir kapatma gerçekleştiren fonksiyona parametre olarak geçirmem gerekiyor. Bu değişken basit bir bölendir. Yani ilk 1 değerinde lot 1'e bölünür ve tüm pozisyon kapatılır. Alım satım koşulları değiştiğinde bu değişken yeni değerler alır ve örneğin 1,5 veya 2'ye eşit olabilir, daha sonra pozisyonun lotu bu sayıya bölünür ve kısmi kapatma gerçekleştirilir. Geçirilmiş bir parametre ile bir işlevi çağırmak şöyle görünür:

 // На глобальном уровне
double Part = 1 ;                           // на сколько разделить лот для частичного закрытия 
//..........

void ClosePartPosBySelect( double Part)     // Объявление функции
// ... тру-ля-ля ... тело функции ...
ll=NormalizeLot((OrderLots()/ Part ));       // рассчёт лота внутри функции
// ... дальнейший код ф-ции ...

//--------- Вызов функции частичного закрытия ---------
// Происходит из тела этой функции
void TrailingPositionsTLE( int MAGIC, int CloseMethod, double Part , int LastTrailing)
// таким образом:
if (CloseMethod== 1 )
            ClosePartPosBySelect( Part );

Yani, işlevi çağırırken ...

TrailingPositionsTLE(561, 1 , 2 , 1 );

... CloseMethod = 1 (kısmi kapatma) olarak ayarlayın ve program sırasında Part set'in değerini (örneğin 2 ) değil, Part = 2 açık değerini belirtin, ancak başlangıç değeri = 1 global düzeyde ayarlanmış...

Nasıl kazanılır??? Teşekkürler...

 
artmedia70 : satım koşulları değiştiğinde bu değişken yeni değerler alır ve diyelim ki 1.5 veya 2'ye eşit olabilir, daha sonra pozisyonun lotu bu sayıya bölünür ve kısmi kapatma gerçekleştirilir.


Peki, ticaret koşulları değiştiğinde, Part değişkeninizi değiştirin. Yoksa başka bir Expert Advisor'da var mı? o zaman bu değişken sürekli okunmalıdır, yani.

int init()

{

.....

GlobalVariableSet ("Part0",Bölüm);

.....

}

int başlangıç()

{

...

Parça=StrToInteger(GlobalVariableGet("Part0"));

...

}

 
Roger :

Peki, ticaret koşulları değiştiğinde, Part değişkeninizi değiştirin. Yoksa başka bir Expert Advisor'da var mı? o zaman bu değişken sürekli okunmalıdır, yani.

int init()

{

.....

GlobalVariableSet("Bölüm0",Bölüm);

.....

}

int başlangıç()

{

...

Parça=StrToInteger(GlobalVariableGet("Part0"));

...

}

Hayır, değişken aynı EA'da. Küresel düzeyde ayarlanır ve işlevler onu kullanabilir, ancak işlevlerin içinde değiştirilen değeri harici olanlara döndürülmez. Bu nedenle işlevler, başlangıçta ayarlanan değerini de görür. Global düzeyde ayarlamazsam, işlevler tanımsız bir değişkende lanetlenir ...
 

Bir değişkeni bir fonksiyona parametresi aracılığıyla geçirirken, değişken değere göre iletilir, yani fonksiyondaki değişkeni değiştirmek, üzerine yazılmasına yol açmaz.
Referans ile geçmeye çalışın, bunu yapmak için parametre adından önce "&" sembolünü ekleyin

 void simple( string &s){
//                 ^
//       спец сим. & перед именем переменной задает передачу по ссылке, а не по значению
//
}
 
VAM_ :

Kodu inceledim - hiçbir yerde uyarı yok! Ne yapalım?

"Olaylar" sekmesinde, "İzin Ver" onay kutusunun işaretini kaldırın.

 

Merhaba sevgili profesyoneller.

Gerçekten aynı anda iki Sat ve Al işlemi açacak bir danışman yazmak istiyorum.

Daha sonra belirli bir puan (lim parametresi) sonrasında kaybetme sırası kapatılır,

ve kârlı, böylece siparişin açılmasından bu yana fiyat maksimum fiyatın altına düştüğünde kapanır

(bir tür sanal sondaki durdurma).

Korkunç bir ıstırap içinde bunu doğurdum, ama işe yaramıyor

lütfen bana bir şey söyle

 int start()
  {
 
  double 
   max, min;                                            
  int b, s;
   if (Bid>max) max=Bid; 
    if (Ask<min) min=Ask;  
       if ( OrdersTotal ()> 0 )
       {                                   
           if ((max-Bid)>=lim* Point ) 
           {                   
          OrderSelect (b,SELECT_BY_TICKET);                                  
          b=OrderClose(OrderTicket(), 0.1 ,Bid, 3 , Blue );
          }
          
          
          if ((Ask-min)>=lim* Point )  
          {         
      OrderSelect (s,SELECT_BY_TICKET); 
      s=OrderClose(OrderTicket(), 0.1 ,Ask, 3 , Red );
         }
}
else
{
  if ( OrdersTotal ()< 1 )
  {
 b= OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 5 , 0 , 0 , "" , 5 , 0 );
      
 s= OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 5 , 0 , 0 , "" , 5 , 0 ); 
    }                           
   }
         return ;

   return ( 0 );
  }
 
artmedia70 :
Global düzeyde bir değişken kümesine, programın yürütülmesi sırasında farklı işlevler çağrılırken farklı değerler atanması ve bunları kaydetmesi nasıl mümkün olur?

iki yol

1. Değerin değiştirildiği fonksiyonda bir ve işareti ekleyin,

ör. geçersiz fonksiyon( çift ve parça ){}

daha sonra, işlevin içindeki değeri değiştirirken, yeni değer çağrı sitesine döndürülür.

2. değişkeni fonksiyon parametreleri listesinden çıkarın, çünkü Değişken global olarak ayarlandığından değeri, parametre olarak iletilmeden kodun herhangi bir yerinde değiştirilebilir.

ancak kafa karıştırmamak için, ne tür bir değişken olduğunu düşünmemek için 1. seçenek daha iyidir, çünkü birden fazla böyle global olarak tanımlanmış değişken olabilir (ve bir fonksiyon içinde).


not Mesaja baktım ve zaten cevaplanmış.

 
artmedia70 :
, ancak işlevlerin içinde harici olanlara değiştirilen değeri döndürülmez.


Fonksiyonun kendisini gösterin.

ClosePartPosBySelect(double Part) geçersizse, o zaman

geçersiz ClosePartPosBySelect()

Neden: