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

 
deyron :
Merhaba. Lütfen söyleyin, eğer bir danışman aynı anda birkaç döviz çifti penceresine bağlıysa, o zaman bir penceredeki danışmandaki değişiklikler başka bir pencerenin danışmanını etkiler mi??? onlar. yerel değişkenler değişir mi değişmez mi???


Aynı Expert Advisor'ın büyüsünü değiştirirseniz, Expert Advisor'lar her biri kendi penceresinde ayrı ayrı çalışacaktır.

 

DANIŞMANIN YENİDEN DEĞİŞTİRİLMESİ İÇİN YARDIM ÇOK İHTİYAÇ VAR!!!

İçinde her şey bana uyuyor, ama ben sadece istiyorum.... Anlaşmayı başabaşa aktarmak veya alım yoluyla kapatmak mümkün değilse, ticaret stratejisini değiştirmeden ters yeni açılış sinyaliyle kapatın. Örneğin, bir Satış anlaşması var, fiyat tersine döndü ve baykuşlar bunu başabaşa aktarmadı, geri alma umuduyla lotta artışla yeni bir mum üzerinde Satış anlaşmaları açmaya başladı, ancak Zararı durdur/akım ile bu anlaşmayı kapatmış gibi çalışmaya devam etmesini istiyorum. .. fiyat ters, al açar ve büyük bir eksi ile de olsa kapatır .... Bunun gibi bir şey

/*decompile kaldırıldı*/

 
deyron :
Merhaba. Lütfen söyleyin, eğer bir danışman aynı anda birkaç döviz çifti penceresine bağlıysa, o zaman bir penceredeki danışmandaki değişiklikler başka bir pencerenin danışmanını etkiler mi??? onlar. yerel değişkenler değişir mi değişmez mi???
Hayır, birbirlerini etkilemezler. Aynı pozisyon büyüsü, ancak danışman pozisyonun kapanmasını sadece sihirle belirlediğinde zararlı olabilir.
 

Hepinize iyi günler. lütfen global değişkenleri anlamama yardım edin. görev şuna benzer: Bir değişkenim var bool line_1=false; true olarak değişir; fiyata ulaşıldığında, ulaşıldığında başka eylemlerin olacağı başarı seviyelerini yapar ve bool line_1 tekrar yanlış olur; sistemi yeniden başlatmam gerekirse veya parametrelere Cuma akşamı ulaşılmazsa, bu değişkenin değerleri kaybolur ve tabii ki ticaretin sonucunu etkiler, anladığım kadarıyla onları global bool yapmam gerekiyor değişkenler. Henüz buna rastlamadım ve kodu doğru bir şekilde derlemeyi düşünüyorsam bana söylemenizi rica ediyorum, eğer bir şey varsa lütfen bana nerede düzelteceğimi söyleyin, teşekkürler.

bool line_1=GlobalVariableGet(yanlış);

if(macd_2<0&&macd_1>0) {line_1=GlobalVariableSet(true);}

if(macd_2>0&&macd_1<0) {line_1=GlobalVariableSet(false);}

Kod bu şekilde oluşturulmuşsa, uçbirim yeniden başlatıldığında, değişken yeniden başlatma anında önceki değerinden ayrılacak mı yoksa programın başında bildirilen durumda sıfıra mı dönecek? Tekrar teşekkürler!

 
paladin80 :
Hayır, birbirlerini etkilemezler. Aynı pozisyon büyüsü, ancak danışman pozisyonun kapanmasını sadece sihirle belirlediğinde zararlı olabilir.

Evet, elbette farklı şekilde filtreleyebilirsiniz. Örneğin, karakter vb. En kolay seçenek dedim.
 
laveosa :

Hepinize iyi günler. lütfen global değişkenleri anlamama yardım edin. görev şuna benzer: Bir değişkenim var bool line_1=false; true olarak değişir; fiyata ulaşıldığında, ulaşıldığında başka eylemlerin olacağı başarı seviyelerini yapar ve bool line_1 tekrar yanlış olur; sistemi yeniden başlatmam gerekirse veya parametrelere Cuma akşamı ulaşılmazsa, bu değişkenin değerleri kaybolur ve tabii ki ticaretin sonucunu etkiler, anladığım kadarıyla onları global bool yapmam gerekiyor değişkenler. Henüz buna rastlamadım ve kodu doğru bir şekilde derlemeyi düşünüyorsam bana söylemenizi rica ediyorum, eğer bir şey varsa lütfen bana nerede düzelteceğimi söyleyin, teşekkürler.

bool line_1=GlobalVariableGet(yanlış);

if(macd_2<0&&macd_1>0) {line_1=GlobalVariableSet(true);}

if(macd_2>0&&macd_1<0) {line_1=GlobalVariableSet(false);}

Kod bu şekilde oluşturulmuşsa, uçbirim yeniden başlatıldığında, değişken yeniden başlatma anında önceki değerinden ayrılacak mı yoksa programın başında bildirilen durumda sıfıra mı dönecek? Tekrar teşekkürler!

Öncelikle GlobalVariableSet() hakkında bilgi edinin - parametreleriniz eksik ve yanlış kullanıyorsunuz.

Ve işlem sırası şu şekildedir: Kaydetmek istediğiniz değişkenin değeri değiştiğinde, bu değer bahsedilen fonksiyon kullanılarak terminalin ilgili global değişkenine aktarılır. Danışmanı init() içinde yeniden başlatırken, GlobalVariableGet() işlevini kullanarak değişkeninize bir değer iletirsiniz.

 

Tanrım, söyle bana lütfen!

Basit bir fikri uygulamaya çalışıyorum, programa yapılan yorumlarda belirtiliyor.

SORUN TEST CİHAZINDAKİ program kodda belirtilen şartlara uymayan fiyattan emir açar.

Örneğin, dizideki en yakın değer 0.85375 iken, 0.86084 fiyatında bir emir açar.

Onlar. fark pozitiftir. Kod, farkın <0,00000 yani 0,00000 ise siparişlerin açılması gerektiğini belirtir. olumsuz.


Lütfen bana hatanın nerede olduğunu söyle.

Teşekkür ederim.

 int start()
{
 double Price=iOpen ( Symbol (), 0 , 0 );        
 double SL= NormalizeDouble (Price- 3000 * Point , Digits );         
 double TP= NormalizeDouble (Price+ 100 * Point , Digits );    
 #include <MASSIV.mqh> //объявление массива типа double (неповторяющиеся значения цены с пятью знаками после точки)
 double value =  Bid ; //параметру value функции ArrayBsearch присваивается значение  цены последнего тика

 int S = ArrayBsearch (  massiv,  value, WHOLE_ARRAY ,   0 , MODE_ASCEND); //функция возвращает индекс значения цены макс. близкой к цене последнего тика 
 if ( ( NormalizeDouble (Bid-massiv[S], Digits ) <= 0 )) //если разница между значением массива возвращенным на последнем тике и ценой последнего тика отрицательная или = 0.00000


{
                        
 OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 1 ,SL,TP, "jfh" , 123 ); //ордер открыть
 
solnce600 :

Tanrım, söyle bana lütfen!

Basit bir fikri uygulamaya çalışıyorum, programa yapılan yorumlarda belirtiliyor.

SORUN TEST CİHAZINDAKİ program kodda belirtilen şartlara uymayan fiyattan emir açar.

Örneğin, dizideki en yakın değer 0.85375 iken, 0.86084 fiyatında bir emir açar.

Onlar. fark pozitiftir. Kod, farkın <0,00000 yani 0,00000 ise siparişlerin açılması gerektiğini belirtir. olumsuz.

Lütfen bana hatanın nerede olduğunu söyleyin.

Teşekkür ederim.

Hataları aramanın yolu: Aşağıdan yukarıya doğru her satırı gözden geçirin ve elde etmek istediğiniz ile yazılan arasındaki uyumu fark edin.

 if (( NormalizeDouble (Bid-massiv[S], Digits ) <= 0 ))
//если разница между значением массива возвращенным на последнем тике и ценой последнего тика отрицательная или = 0.00000
Bu koşul varsayar ki... - Öyle mi düşündünüz??? (1 - 1000000 <= 0) - tatmin edici???

Sana bir çözüm verdim ve sen "geçtin" ...

 
TarasBY :

Hataları aramanın yolu: Aşağıdan yukarıya doğru her satırı gözden geçirin ve elde etmek istediğiniz ile yazılan arasındaki uyumu fark edin.

Bu koşul varsayar ki... - Öyle mi düşündünüz??? (1 - 1000000 <= 0) - tatmin edici???

Sana bir çözüm verdim ve sen "geçtin" ...

Çok teşekkür ederim.Geçmedim.O ipucunu bile kopyaladım .... Sadece tam olarak anlamadım ..... aptallığım için üzgünüm .... şimdi kendimi zorlayacağım beyin ve onu anlamaya çalışın.

Sadece Vid değişkeninin değerini (son tik fiyatı) neden bir olarak aldığınızı anlamıyorum.Bunun ilkinden sonra kesirli nokta ile 6 karakterlik bir değer olduğunu düşünüyorum ... ve değer

masiv[S] de bence ilkinden sonra kesirli nokta ile 6 karakterden oluşuyor.Lütfen bana neyi yanlış anladığımı söyleyin.

Kodunuzu dikkatlice inceledim. İşte burada

double ld_Delta = 10 * Nokta;
if (NormalizeDouble (MathAbs (Teklif - Fiyat), Rakamlar) <= ld_Delta)//
ve bu fiyat yeni bir çubuğun açılış fiyatıdır
{OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123);}// sipariş aç  


Ama anlamadım

-Neden massiv[S] değişkeni yerine Price değişkenini kullanmayı öneriyorsunuz ? Sonuçta, son çubuğun açılış fiyatının değerini içerir .

Sonuçta, ana fikrim, bir emir açmak için zorunlu koşullardan birinin, açılış fiyatının, son tik fiyatına en yakın olan dizi değerlerinden biriyle çakışmasıdır.

Tam stratejim şöyle görünüyor

2 koşul aynı anda yürütüldüğünde AÇIK SİPARİŞ

-son mumun açılış fiyatından

- dizinin değerlerinden birine mümkün olduğunca yakın bir fiyata (dizinin değerleri, rastgele sırayla giden Teklif fiyatının tekrar etmeyen yaklaşık 2000 değeridir)

Yardımınız ve tavsiyeniz için çok minnettar olurum - aksi takdirde ikinci gün beynimi zorluyorum ..... ve hepsi boşuna.


	          
 
solnce600 :

Çok teşekkür ederim.Geçmedim.O ipucunu bile kopyaladım .... Sadece tam olarak anlamadım ..... aptallığım için üzgünüm .... şimdi kendimi zorlayacağım beyin ve onu anlamaya çalışın.

Sadece Vid değişkeninin değerini (son tik fiyatı) neden bir olarak aldığınızı anlamıyorum.Bunun ilkinden sonra kesirli nokta ile 6 karakterlik bir değer olduğunu düşünüyorum ... ve değer

masiv[S] de bence ilkinden sonra kesirli nokta ile 6 karakterden oluşuyor.Lütfen bana neyi yanlış anladığımı söyleyin.

Kodunuzu dikkatlice inceledim. İşte burada

double ld_Delta = 10 * Nokta;
if (NormalizeDouble (MathAbs (Teklif - Fiyat), Rakamlar) <= ld_Delta)//
ve bu fiyat yeni bir çubuğun açılış fiyatıdır
{OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123);}// sipariş aç  

Ama anlamadım

-Neden massiv[S] değişkeni yerine Price değişkenini kullanmayı öneriyorsunuz ? Sonuçta, son çubuğun açılış fiyatının değerini içerir .

Sonuçta, ana fikrim, bir emir açmak için zorunlu koşullardan birinin, açılış fiyatının, son tik fiyatına en yakın olan dizi değerlerinden biriyle çakışmasıdır.

Tam stratejim şuna benziyor

2 koşul aynı anda yürütüldüğünde AÇIK SİPARİŞ

-son mumun açılış fiyatından

- dizinin değerlerinden birine mümkün olduğunca yakın bir fiyata (dizinin değerleri, rastgele sırayla giden Teklif fiyatının tekrar etmeyen yaklaşık 2000 değeridir)

Yardımınız ve tavsiyeniz için çok minnettar olurum - aksi takdirde ikinci gün beynimi zorluyorum ..... ve hepsi boşuna.

Neler olduğunu anlamak için hesaplamaları yazdırmanız gerekir:

     //если разница между значением массива возвращенным на последнем тике 
    // и ценой последнего тика отрицательная или = 0.00000
     if (( NormalizeDouble (Bid-massiv[S], Digits ) <= 0 ))
    {
         Print ( "massiv[" , S , "] = " , massiv[S], " | massiv[" , S - 1 , "] = " , massiv[S- 1 ], " | massiv[" , S + 1 , "] = " , massiv[S+ 1 ], " | Bid = " , Bid);
         OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 1 ,SL,TP, "jfh" , 123 ); //ордер открыт
    }
ve sonuçları analiz edin.