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

 
Code :


Cevabınız için teşekkür ederim ve sorularınızı cevaplayacağım.

Bu karakteristik, göstergenin tüm fikridir. Ve aynı zamanda MQL'de bir egzersiz. Kendim için bir görev buldum, sezgisel olarak dilde uygulanmasının çok karmaşık olmadığını anlıyorum. oturup denerim.

Dolayısıyla, özelliğin özü, iki tek yönlü hacmin belirli bir sabit teorik seviyesini gerçek seviye ile karşılaştırmamdır. Yani, iki hacmin toplamının gerçek "aç-kapa" aralığına gerçek oranı verilen teorik olandan daha yüksekse, gerçek ikinci hacme hesaplanan arasındaki fark şeklinde bir "bonus" eklerim. teorik ve gerçek sonuçlar. Gerçek seviye teorik seviyeden daha düşükse, aynı farkı ikinci çubuğun hacminden çıkarırım. Açıklamak açık mıydı?

Her ihtimale karşı, bu özelliği ifşa ettiğinizde, parantezleri yanlış, görünüşe göre aceleyle koyduğunuzu söyleyeceğim.

Ayrıca, benimkine eşdeğer olduğunu düşündüğünüz satırlar, sıfıra bölünmeye yol açacak gibi görünüyor. Şimdi kontrol edeceğim.

Açıkça. Ancak 2 (iki cilt arasındaki ortalama) ile UP12 değişkeninde hesaplananın nasıl birbirine bağlı olduğu açık değildir. Sonuçta, birinin ve diğerinin boyutları farklı. Paydalarda süre ve fiyat. Ne de olsa okulda bile bize metre ve kilogramın hiçbir şekilde eklenemeyeceği öğretildi! :))))


Aynen, doğru değil! :)))) Kesirler biçimindeki formüller bir şeydir ve her şey tek bir satırdadır ve nasıl olduğu belli değildir... Bu dikkatsizlik, acele değil...

Ayrıca, kodu yanlış optimize ettim. Yine matematikte bir hata var. Parantezleri unutmuşum.

   double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+ 1 ])* 1000 );
 
Roman. :

Tarzınız hiç orada değil ... tamamen yanlış ticaret kriterlerine, soru STO-HAS-TI-KE ile ilgili ... :-P

Soru şuydu:

hayat için fikirler :

Koşul1 karşılanırsa , o zaman:
-açık SATIŞ emirlerini kontrol edin
-varsa kapatın
- hesaptaki paranın kullanılabilirliğini kontrol edebilirsiniz
- SATIN AL için bir sipariş açın

Koşul2 karşılanırsa aynı, o zaman:
-açık SATIN AL siparişlerini kontrol edin
-varsa kapatın
- hesaptaki paranın kullanılabilirliğini kontrol edebilirsiniz
-SATIŞ için bir emir açın
+ hata analizi (ana şey değil, mümkün)

Ve işte STOHASTEG??? :))))

Gerekli tüm kontroller yapılmış ve alım satım sinyali oluşmuş veya oluşmamıştır.

 
demlin :

Merhaba!

Bu branşın uzmanlarının (özellikle Roman) paha biçilmez yardımı sayesinde, test cihazında + gösteren basit bir Expert Advisor oluşturmayı başardım. Soru: Gerçek olarak ortaya çıkıp çıkmayacağını nasıl belirleyebilirim? Herhangi bir kriter var mı?


Evet, "temel" şeyleri hangi kriterlerle çözersiniz (gerçekten keskinleştirme - Bağlantının kesilmesi ve ek bir hatta geçiş üzerindeki kontrolü dikkate almıyorum), uygun organizasyonel kararlar veren uzmanla olası hataların yetkin bir şekilde ele alınması şeklinde daha fazla çalışma üzerine, sonra zorunlu bir demo, sonra mikro gerçek... Sonuçlardan memnunsanız - "hepsini kullanın"... :-))) Başlamak için, ders kitabından danışmanın hata işlemesini analiz edin, emir vermeden önce, alım satım işlemleri yaparken gereksinimleri ve kısıtlamaları kontrol etmeyi unutmayın , aramada Google üzerinden şöyle bir şey yazın: Hataları işleme site:mql4.com, Gerçek site için Uzman Danışman Hazırlama:mql4.com, I (kısım :-P) bunun gibi benzer işlevleri yerine getiren bir uzmana sahip olmak:

 // После старта
if (! IsTradeAllowed () || IsTradeContextBusy () || ! IsConnected ()) return ; // если торговля невозможна, то выходим

Onunla çalışmak için bir sipariş seçimini kontrol etme

                 if (ticket> 0 )                                               // Если позиция открылась
                    {
                       while ( OrderSelect (ticket,SELECT_BY_TICKET)==false) Sleep ( 1000 );     // Если ордер выбран
                         double OpenPrice= OrderOpenPrice ();
                         ...  
                           

Başlangıçta

 color ColorBuy = Blue , ColorSell = Red ;
bool UseSound = true;
string alert.wav;
color clr, ClrClose = Gray ;
int Level_new; 
double price;
bool result, Buy_signal=false, Sell_signal=false;
int   orderIndex;
bool IsExpertFailed = false;
bool IsExpertStopped = false;
double lots;                       // вспомогательная переменная для расчета нового размера лота 
double Lots_New;                   // Количество лотов для новых ордеров
int ticket;                         // Номер ордера
double orderLots;                   // Lots   
double orderProfit;                 // Profit
double Price;                       // Цена открытия рыночного ордера
double SL;                         // Значение StopLoss ордера
double   TP;                         // Значение TakeProfit ордера
static datetime prevtime = 0 ;       // по ценам открытия

int init(){
    IsExpertStopped = false;
     if (! IsTradeAllowed ())
       {
         Comment ( "Необходимо разрешить советнику торговать" );
         IsExpertStopped = true;
         return ( 0 );
       }
      
     if (! IsTesting ())
       {
         if ( IsExpertEnabled ())   Comment ( "Советник запустится следующим тиком" );       
           else    Comment ( "Отжата кнопка \"Разрешить запуск советников\"" );
      
       }
    ...
   
   return ( 0 );
}

Her şey, IMHO, yeni başlayanlar için, uzun süre devam edebilirsiniz ...

Her durumda, "Yönetici" nin kontrolü gereklidir ... :-R Birleştirilen mevduatlar için dayanılmaz derecede acı verici olmaması için ...

 

Maksimum Z :


Soru şuydu:

Ve işte STOHASTEG??? :))))

Gerekli tüm kontroller yapılmış ve alım satım sinyali oluşmuş veya oluşmamıştır.


Doğrudan bir soru vardı:

"Bunların hepsi mevcut döviz çifti için.
int başlangıç()
{
double M_0, M_1, // 0 ve 1 çubuklarında ANA değer
S_0, S_1; // 0 ve 1 çubuklarında SİNYAL değeri
//------------------------------------------------ --------------------
// tech.indicator işlevinin çağrılması.
M_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, 0);// 0 bar
M_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, 1);// 1 bar
S_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);// 0 bar
S_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);// 1 bar
//------------------------------------------------ --------------------

if( M_1 < S_1 && M_0 >= S_0 ) // DURUM 1: Yeşil kırmızıyı aşağıdan keser

if( M_1 > S_1 && M_0 <= S_0 ) // DURUM 2: Yeşil kırmızıyı yukarıdan keser

//------------------------------------------------ --------------------
dönüş; // başlangıçtan çık()
}"

Genel olarak, boşver, IMHO, yazara ölçekleme gönderdiler, anlayacaktır ... :-P

 

Roman. :


Başlangıçta

 ...
int init(){
    IsExpertStopped = false;
     if (! IsTradeAllowed ())
       {
         Comment ( "Необходимо разрешить советнику торговать" );
         IsExpertStopped = true;
         return ( 0 );
       }
...

IsExpertStopped değişkeninin amacı nedir? Ve günlükteki her işaretin " Danışmanın ticaret yapmasına izin vermek gerekiyor" mesajının görüneceği ortaya çıktı...

 
MaxZ :

IsExpertStopped değişkeninin amacı nedir? Ve günlükteki her işaretin "Danışmanın ticaret yapmasına izin vermek gerekiyor" mesajının görüneceği ortaya çıktı...

Bunu beğendim:


F1 tıklayın
 IsTradeAllowed ()

öğrenin... :P

Yani "

EA'nın ticaret yapmasına izin veriliyorsa ve ticaret işlemlerini gerçekleştirmek için iş parçacığı ücretsizse", o zaman ticaret yaparız, aksi takdirde IsExpertStopped = EA durdurulur, ticaret için izin bekliyoruz ...

 
Roman. :

F1 tıklayın

öğrenin... :P

Yani "

Expert Advisor'ın ticaret yapmasına izin veriliyorsa ve ticaret işlemlerini gerçekleştirmek için konu ücretsizse", o zaman ticaret yaparız, aksi takdirde IsExpertStopped = Expert Advisor durdurulur, ticaret için izin bekliyoruz...

Aklıma geldi... Bugün tamamen dikkatim dağıldı. init()'i görüyorum ama start()'ı düşünüyorum! :)))))

 
MaxZ :

Açıkça. Ancak 2 (iki cilt arasındaki ortalama) ile UP12 değişkeninde hesaplananın nasıl birbirine bağlı olduğu açık değildir. Sonuçta, her iki miktarın boyutları farklıdır. Paydalarda süre ve fiyat. Ne de olsa okulda bile bize metre ve kilogramın hiçbir şekilde eklenemeyeceği öğretildi! :))))


Aynen, doğru değil! :)))) Kesirler şeklinde formüle etmek bir şey, ve başka bir şey hepsi bir satırda ve nasıl olduğu belli değil ... Bu dikkatsizlik, acele değil ...

Ayrıca, kodu yanlış optimize ettim. Yine matematikte bir hata var. Parantezleri unutmuşum.


MaxZ, acele et, oh acele et :))) sonuçlarla!

Kilometre ve kilogram eklemedim. Gerçek hayat örneği. Bugünkü Eurodollar, 5 dakika. Art arda 2 büyüyen mumun olduğu tabloya baktım.

vback1=703, dVolume=696. (vback1+dVolume)/2=699.5.

Aynı mumlar için (Kapat[i]-Aç[i+1] )*1000=(1.42911-1.42549)*1000=3.62

(vback1+dVolume)/3.62=386.5

Toplam: 696+699.5-386.5=1009. Hangisi çizilmelidir. Ve bu, yani 1009, gösterge bu yerde gösteriyor. Peki, vb.

Başka bir şey de, bu örneği burada hesapladıktan sonra, kodun içine yerleştirilmiş formüle göre, bir önceki gönderide size anlattığım şeyin gerçekleşmediğini kendim keşfettim. Aslında, farklı bir ideoloji, bir tür kendi kendini düzenleme olduğu ortaya çıktı. vrealUP12 parametresinin eksi değerleri dVolume+vteor12 toplamını geçmediği sürece son hacme bir artış olacaktır. Veya ek hesaplama parametreleri ExtVolumesBuffer[i] girmeniz gerekir.

Ve çizgide

 double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+ 1 ])* 1000 );

hemen geri döndüm

 double vrealUP12=(dVolume+vback1)/UP12;

uzatmak değil.

 
Code :


MaxZ, acele et, oh acele et :))) sonuçlarla!

Kilometre ve kilogram eklemedim. Gerçek hayat örneği. Bugünkü Eurodollar, 5 dakika. Art arda 2 büyüyen mumun olduğu tabloya baktım.

Kahretsin ... Ekle ve nasıl! :))

vteor12 değişkeni Volumes boyutuna sahiptir (bunlar Bizim sayaçlarımızdır).

vteor12=(dVolume+vback1)/ 2 ;

UP12 değişkeni, bazı döviz çiftleri için Puan boyutuna sahiptir.

UP12=(Close[i]-Open[i+ 1 ])* 1000

vrealUP12 değişkeni, Hacimlerin Puanlara oranının boyutuna sahiptir (bunlar Bizim kilogramlarımızdır).

vrealUP12=(dVolume+vback1)/UP12;

Ve sonunda, bahsettiğimiz şey olan, metre ve kilogramın toplamı olan özelliğinizi hesaplarsınız! ;D

ExtVolumesBuffer[i]=dVolume+vteor12-vrealUP12;


Sadece 2, 20 puan değilse, teoride geçmesi gereken iki çubuk için fiyat! :)) Ama bu zaten bir tür saçmalık ...


Kod :


Ve çizgide

 double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+ 1 ])* 1000 );

hemen geri döndüm

 double vrealUP12=(dVolume+vback1)/UP12;

uzatmak değil.

Uzatma bazen yararlıdır. Bilgisayar kaynaklarından tasarruf sağlar! :))) Bu ekstra değişken ne için?

 
MaxZ :

Kahretsin ... Ekle ve nasıl! :))

vteor12 değişkeni Volumes boyutuna sahiptir (bunlar Bizim sayaçlarımızdır).

UP12 değişkeni Fiyat boyutuna sahiptir.

vrealUP12 değişkeni, Hacimler ve Fiyatlar oranının boyutuna sahiptir (bunlar Bizim kilogramlarımızdır).

Ve sonunda, bahsettiğimiz şey olan, metre ve kilogramın toplamı olan özelliğinizi hesaplarsınız! ;D


Tamam, farklı görünmeye çalışalım.

vteor12 (dVolume+vback1)/k1 (faktör 1) olarak yazılabilir

vrealUP12 (dVolume+vback1)/k2 (faktör 2) olarak yazılabilir

Göstergenin ideolojisini daha önce tanımlamaya çalıştığım için, bazı teorik ve gerçek seviyelerin karşılaştırılmasından ibarettir. Bu seviyeleri elde etmek için aynı değeri (dVolume + vback1) (yani böl) belirli bir teorik değer (k1) ve gerçek (k2) ile karşılaştırırım. Maça maça dersek sadece k1 uydurduğum anlaşılıyor. Ya da isterseniz, bir varsayımda bulunuyorum. Şimdi bir şeyle karşılaştırılmalı. Bu konuda tablonun kendisinden daha nesnel ve doğru bir şey yoktur. Bu nedenle, açılış ve kapanış arasındaki farkı belirli bir sürenin nihai sonucu olarak algılıyorum. Ve burada sadece bir görev var - aynı bit derinliğine getirmek, bu yüzden 1000 ile çarpılıyor.

Komşu mumlar için birkaç farklı seçeneği hesaplamak için bir hesap makinesi kullanmayı deneyin ve bu çok basit formülü kullanarak elde edilen çeşitli sonuçlara şaşırabilirsiniz.

Ve okul mantığı açısından haklısın. Okulda izin verilmeyen Hacim + Hacim/Fiyat ekliyorum. :))