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

 
Arles :
Lütfen bana sorunu nasıl çözeceğimi söyleyin: aynı danışman birkaç çizelgede asılı kalıyor, aynı zamanda örneğin iki çizelgede bir sipariş açmak için bir sinyal var. Ancak ikinci siparişin açılmamış olması gerekmektedir. EA'nın açık bir sipariş kontrolü var, ancak bu yardımcı olmuyor, çünkü görünüşe göre, ilk EA bir siparişi açarken, ikincisi de bir açma isteği gönderiyor. Çözümler var mı?
Birkaç çizelgede birkaç özdeş Uzman Danışmanın hangi amaçla kullanıldığı tam olarak açık değildir. - Bu anlayışa dayanarak, bir şeyler tavsiye etmek daha mantıklı olacaktır. Ancak, mevcut bilgilere dayanarak, ticaret yapmak için yalnızca bir danışmana ihtiyacınız varsa, ikincisinin ticaret yapmasını ya ayarlarda (eğer danışmanın içinde verilmişse) ya da "Genel" sekmesinde yasaklayabilirsiniz - Danışmanın ticaret yapmasına izin verin. ticaret yapın (işareti kaldırın).
Bu arada, tüm Uzman Danışmanlar tek bir terminalde paralel olarak değil, sırayla çalışır. - 1.si işi tamamlamamışken 2.si verileri işlemeyecektir. Bu nedenle, Uzman Danışman doğru yazılmışsa, yani. verilen siparişi kontrol eder, ikincisi bu siparişi dikkate alır. - Bu zaman. Ancak bu, yalnızca Uzman Danışmanların çalışmalarını koordine edecek şekilde ayarlanması durumunda gerçekleşecektir. Diyelim ki aynı Magic ve Money Management muhasebesine sahipler. Aksi takdirde, yalnızca "ekstra" danışmanları devre dışı bırakarak. "O zaman neden onları koydun?"
 
Chiripaha :
Birkaç çizelgede birkaç özdeş Uzman Danışmanın hangi amaçla kullanıldığı tam olarak açık değildir.

EA, yalnızca üzerinde asılı olduğu çifti analiz eder. Sinyalin daha önce hangi çiftte göründüğü, sipariş orada açılır. Ancak aynı anda iki çiftte bir sinyal belirir. Ve garip bir şekilde, EA genel olarak herhangi bir açık siparişi kontrol etmesine ve ikincisini açmamasına rağmen 2 sipariş açılır. Ve bu, mevduatta yeterli para olmadığı için gereklidir.

1.si işi tamamlamamışken 2.si verileri işlemeyecektir.

Evet, ancak birincisi işi bitirip bir sipariş açtığında, 2.si, çalışmaya başladıktan sonra, siparişin zaten kısa bir süre için orada olduğunu GÖRMEZ. Ya da sipariş açılmadan işe koyulur.
--

Ve bir şey daha: 1. Expert Advisor Uyku (1000) ne zaman ikinciyi bekler veya çalışmaya başlar?

 

Herkese iyi günler!

Aşağıdaki fikri kodladı

Koşul N1 ..Yüksek[1] bazı maksimum X değerini aşıyorsa

ve nerede

Koşul N2 Sonraki 150 mumdan ilkinin Yüksek[1] ve Düşük arasındaki fark >= 150 s.

-------------------------------------------------- ----------------

Eylem N1. Önceki siparişi sil

Eylem N2 ..Beklemeyi ayarla

Eylem N3. Değişkenlere değerler atayın.

SORUN . Bekleyen emrin sadece piyasada emir olmaması veya son emrin mevcut çubukta verilmemesi durumunda verilmesine rağmen. if ( ot ==0 || last_order_bar >0)

Koşul N1 ve Koşul N2 karşılandığında, aynı anda BİRÇOK bekleyen sipariş verilir.

Yerleştirilmek için yalnızca BİR bekleyen siparişe ihtiyacım var.

-------------------------------------------------- ---

ot ve last_order_bar değerleri yukarıda bu kodda hesaplanmıştır

                                                                                                                        
                                                                                                                
int last_order_bar = 0 ;                                                                                                                 
int ot = OrdersTotal ();                                                                                                                 
                                                                                                                        
 if (ot> 0 ) //если есть ордера в рынке                                                                                                                   
 {                                                                                                                      
   if ( OrderSelect (ot- 1 ,SELECT_BY_POS)) //выбрали последний ордер                                                                                                                      
       if ( OrderType ()==OP_SELLSTOP) //проверили тип
        last_order_bar = iBarShift ( Symbol (), 0 ,T ); //запомнили, на каком  баре открыт последний ордер (если он есть)                                                                                                                  
 }                                                                                                                      
 if (High[ 1 ] > X )
 {
   
   for ( int i= 1 ;i< 150 ;i++)
     {
       if ((High[ 1 ]-Low[i])>= 1500 * Point ) //
       break ;         //
             {
     if (ot> 0 ) 
         {
           bool R = OrderDelete(OrderTicket());  
         }
if (R== 0 )                       //если последний выставленный SELLSTOP удален
         {
if (ot== 0 || last_order_bar> 0 )        
int Ticket= OrderSend ( Symbol (),OP_SELLSTOP, 0.1 ,iHigh( Symbol (), 0 , 1 )- 1500 * Point , 1 ,iHigh( Symbol (), 0 , 1 ),iHigh( Symbol (), 0 , 1 )- 1610 * Point , "jfh" , 123 ); //выставить новый SELLSTOP       
if (Ticket> 0 )                 // если SELLSTOP выставлен
 N = (OrderTicket());         //запомнить в глобальную переменную N тикета данного SELLSTOP .
 T = Time [ 0 ];               //запомнить в глобальную переменную время выставления данного SELLSTOP
 X=iHigh( Symbol (), 0 , 1 );   //запомнить в глобальную переменную High свечи N1 после которой был выставлен данный SELLSTOP
   
 }
 }
 }
 }
}
 }   
                        
return ( 0 );
 
Arles :

EA, yalnızca üzerinde asılı olduğu çifti analiz eder. Sinyalin daha önce hangi çiftte göründüğü, sipariş orada açılır. Ancak aynı anda iki çiftte bir sinyal belirir. Ve garip bir şekilde, EA genel olarak herhangi bir açık siparişi kontrol etmesine ve ikincisini açmamasına rağmen 2 sipariş açılır. Ve bu, mevduatta yeterli para olmadığı için gereklidir.

Evet, ancak birincisi işi bitirip bir sipariş açtığında, 2.si, çalışmaya başladıktan sonra, siparişin zaten kısa bir süre için orada olduğunu GÖRMEZ. Ya da sipariş açılmadan işe koyulur.
--

Ve bir şey daha: 1. Expert Advisor Sleep(1000) ikincisini ne zaman bekler veya çalışmaya başlar?

İlk soruda: Eğer danışmanlar doğru yazılırsa rezervasyon yaptırdım... Tabii ki, verilen (açık) sipariş için danışmanda herhangi bir kontrol yoksa ve hatta sizin tanımladığınız şekilde ortaya çıkabilir. bu emirleri hesaba katmak, Para Yönetiminin hesaplanması - bu zaten programcının seviyesine (ve tembelliğine) bağlıdır - bunları düşünüp düşünmediğine ve danışmana kayıtlı olup olmadığına bağlıdır. Her şey doğru bir şekilde uygulanırsa, korkularınızın hiçbiri olmayacak. - Sinyal - evet, aynı anda 2 çiftte görünebilir, ancak (önceki gönderiyi okuyun), danışmanlar sırayla çalışır. Bu nedenle, ilk Uzman Danışman teklifleri işleme koyana kadar bir sonraki danışman çalışmaya başlamaz. - Bu nedenle, çiftlerden kaçınmak için sıra ilkesinin korunduğunu düşünüyorum (paralel işleme olasılığı olsa bile - bu ayrı bir tartışma konusudur).

Aynı zamanda danışmanın seviyesine de bağlıdır. Çünkü Sorduğunuz her şey reçete yazmak için oldukça sıkıcı - finans bilgisi gerektiren çok büyük bir iş. Bu nedenle, Uzman Danışmanlar, kural olarak, "basittir" ve tüm hesabın mevcut para biriminde verildiği gerçeğine odaklanır. Genellikle bir para birimi işlem görür. Çünkü, örneğin birkaç para birimiyle ticaret yapmak için, tamamen farklı bir siparişin depozitosuna sahip olmanız gerekir ve bu tür basit sistemler artık orada geçerli değildir. Bunun bir istisnası, belki de sadece işlemler (tam terimi unuttum, farklı bir şekilde ifade edeceğim) bir çiftte bir fiyattan açıldığında ve hemen bir diğerinde (hatta birkaçında) yeniden açıldığında riskten korunma olacaktır - fark şudur: kendin. Ancak bu farklı bir danışman türüdür ve orada her şey dikkate alınacaktır (hepsi bir arada). - Ve genel olarak, benim görüşüme göre, para çiftin likiditesinden fazla değilse, o zaman tüm çiftleri aynı anda ticaret yapmak kötü bir formdur. (ama bu benim kişisel görüşüm) Portföyler vb. - tüm bunlar spekülatif ticaret için gerekli değildir. Nedense insanlar bunu hiç dikkate almıyor. - Eğer bir üretim şirketi veya uluslararası piyasada ticaret yapmayan bir şirket değilseniz, o zaman çok fazla para birimine ihtiyacınız yok. - Demek istediğim bu - neden, kural olarak, Uzman Danışmanlarda farklı para birimlerini muhasebeleştirmek için bu tür blokları uygulamıyorlar - ilgisizlik nedeniyle.

Ve ikinci soruda : dürüst olmak gerekirse, bu soru bana da açık - terminalin Sleep(1000) işleviyle nasıl tepki vereceğinden henüz tam olarak emin değilim. - Ben de bilenlere dönüyorum - cevabı önermek için. Teoride, terminal şu anda yalnızca hat içi fiyatları işleyecektir - yani. teklifleri kabul edin, çizelgeler ve göstergeler çizin. Ancak bu Uzman Danışman "beklerken" sırasını başkasına devretmez. Ama bu sadece benim tahminim, ki emin değilim. Belki de bu "sıranın" istisnası, bir Uzman Danışman beklerken yürütülmek üzere başlatılabilen komut dosyalarıdır. - Aynı sorum var.

Ama - danışmanlarımın çalışmalarını ilk paragraftaki yazının doğruluğuna dayanarak inşa ederek bu cehaletten çıkıyorum.

 
solnce600 :

Herkese iyi günler!

Aşağıdaki fikri kodladı

Koşul N1 ..Yüksek[1] bazı maksimum X değerini aşıyorsa

ve nerede

Koşul N2 Sonraki 150 mumdan ilkinin Yüksek[1] ve Düşük arasındaki fark >= 150 s.

-------------------------------------------------- ----------------

Eylem N1. Önceki siparişi sil

Eylem N2 ..Beklemeyi ayarla

Eylem N3. Değişkenlere değerler atayın.

SORUN . Bekleyen emrin sadece piyasada emir olmaması veya son emrin mevcut çubukta verilmemesi durumunda verilmesine rağmen. if (ot==0 || last_order_bar>0)

Koşul N1 ve Koşul N2 karşılandığında, aynı anda BİRÇOK bekleyen sipariş verilir.

Yerleştirilmek için yalnızca BİR bekleyen siparişe ihtiyacım var.

:)) Andrey, ders kitabında çiğnenmiş o soruları soruyorsun. Eğitimdeki "Terminal" örneğine bakın - siparişlerin nasıl takip edileceğinin ilkelerini ve mantığını ayrıntılı olarak açıklar. - O zaman sorularınızın çoğu kendiliğinden kaybolacaktır. Genel olarak ders kitabı, HERHANGİ bir yetkili danışmanın yapısının örnek olarak sunulması gerçeğine dayanmaktadır. - Güzelliği bu. + programlama ile ilgili temel teorik kavramlar verilir. Ancak içinde bir bulmaca var - tembel olmayan bir okuyucu için tasarlandı - bu, yazılanların yapısından geliyor. Onlar. belirli noktalardaki soruları kaldırmak için ders kitabının tamamını okumanız gerekir. Ve birkaç kişi onu yeniden satmayı kabul ediyor (ders kitabı).

Sipariş yığınları oluşturuyorsunuz. - Daha kolay olması gerekiyor. Ya bir siparişiniz var ya da yok - ve hangi barda (koşullarınız altında) açık olduğu önemli değil. - Bu karmaşıklıklardan, emirler ve koşullar konusunda kafa karışıklığı yaşıyorsunuz. - Herhangi bir programcının görevi olan algoritmik hataların nedeni budur. Program yazma mantığını değiştirin - algoritmik hatalar (kendi kendine) ortadan kalkar.

 
Tamam teşekkürler.
 
Arles :

EA, yalnızca üzerinde asılı olduğu çifti analiz eder. Sinyalin daha önce hangi çiftte göründüğü, sipariş orada açılır. Ancak aynı anda iki çiftte bir sinyal belirir. Ve garip bir şekilde, EA genel olarak herhangi bir açık siparişi kontrol etmesine ve ikincisini açmamasına rağmen 2 sipariş açılır. Ve bu, mevduatta yeterli para olmadığı için gereklidir.

Ve her şey basit basit! İlk danışman sizin için bir sipariş açar. Siparişi hangi kepçenin açtığı önemli değilse, her ikisinde de bir koşul oluşturacağız. Son açık siparişi bulan ve buna göre açılış zamanını çıkaran bir Boole işlevi oluşturun. Bu açılma süresi mevcut çubuğun açılmasına eşit ise TRU ile fonksiyondan çıkıyoruz . Fonksiyonu başlangıcın başına yerleştirin ve eğer TRU ise, start'tan çıkın, ancak YANLIŞ ise, EA olması gerektiği gibi çalışır..
 
Chiripaha :

Ve ikinci soruda : dürüst olmak gerekirse, bu soru bana da açık - terminalin Sleep(1000) işleviyle nasıl tepki vereceğinden henüz tam olarak emin değilim. - Ben de bilenlere dönüyorum - cevabı önermek için. Teoride, terminal şu anda yalnızca hat içi fiyatları işleyecektir - yani. teklifleri kabul edin, çizelgeler ve göstergeler çizin. Ancak bu Uzman Danışman "beklerken" sırasını başkasına devretmez. Ama bu sadece benim tahminim, ki emin değilim. Belki de bu "sıranın" istisnası, bir Uzman Danışman beklerken yürütülmek üzere başlatılabilen komut dosyalarıdır. - Aynı sorum var.

Ama - danışmanlarımın çalışmalarını ilk paragraftaki yazının doğruluğuna dayanarak inşa ederek bu cehaletten çıkıyorum.



Anladığım kadarıyla, Sleep() işlendiğinde, Expert Advisor sadece uykuya dalıyor, yani. işi askıya alınır ve şu anda uzman ne teklif alır ne de hiçbir şeye tepki verir. Ve buna göre, bu terminal "sırayı" diğerine aktaracak ..

Aynı fikirde olmayan biri varsa, lütfen beni düzeltin!

 
hoz :


Anladığım kadarıyla, Sleep() işlendiğinde, Expert Advisor sadece uykuya dalıyor, yani. işi askıya alınır ve şu anda uzman ne teklif alır ne de hiçbir şeye tepki verir. Ve buna göre, bu terminal "sırayı" diğerine aktaracak ..

Aynı fikirde olmayan biri varsa, lütfen beni düzeltin!

Kabul etmeye hazır değilim. - Çünkü böyle bir durumdan, hem para hem de pozisyon danışmanları tarafından işin ve hesaplamanın doğruluğunu sürdürme mantığı kaybolur. - Bu zaman. İkinci. - Danışmanım örneğin 100 milisaniye uyursa ve o sırada bir diğeri çalışmaya başlarsa, o zaman ne olur ki, bu 100 milisaniye geçer geçmez diğeri işini durdurmak zorunda kalacak ... ve iletmek zorunda kalacak. ortası buna geri döndü ve sonsuzca... Öte yandan. Uzman Danışmanlarda (nadiren değil) her işlem bloğunda dakikalarca ve birçok kez "uyku" gönderdiklerini gördüm. - O zaman, şu anda diğer tüm baykuşlar çalışmıyorsa, bir şekilde yanlıştır. - Bu nedenle, soru oldukça alakalı. Şu anda çalışmanın mantığını anlamak istiyorum. Ancak resmi belgelerde ayrıntılı bir açıklama bulamadım.

Ama iki kötülükten ikincisini seçerdim. Bu durumda, emin olduğum baykuşu bırakırdım. Bu yapılmazsa, önemli değil: çalışmaları yavaşlasa da en azından yeniden hesaplamaların doğruluğu korunur.

Sorun göründüğü kadar önemsiz değil. - Gerçek şu ki, deneylerimin gösterdiği gibi, " Danışmanın ticaret yapmasına izin ver " onay kutusu işaretli olmadığında, danışmanın işi durmaz - tüm hesaplamalar her kene üzerinde de yapılır. Sadece danışmanın işlemleri sunucuya gösterilmez. Ancak, bu hesaplamalarda bu "fişler" tıkanmışsa (tamamen doğru değil), o zaman bu tür 5-10 danışman varsa, şu anda ticarette olan mevcut danışmanın yürütülmesini özellikle yavaşlatabilirler.

Evet, bazı programcılar ticaret iznini kontrol eder ve bu temelde baykuşun işini atlar. Ancak çoğu zaman bu yapılmaz. Ve eğer kod kapalıysa, işin yavaşlayıp yavaşlamadığını (ve özellikle hangi baykuşun) hiç anlayamayız. - Şimdi forum aramasında bu konuya bakacağım. Bir şey yavaşladı.

Arles'a hatırlatan ve güncellenen soru için teşekkürler. Daha önce, bu konuda yazılanları anlayacak kadar tecrübem yoktu. Şimdi tekrar uzanacağım.

 
Arles :

EA, yalnızca üzerinde asılı olduğu çifti analiz eder. Sinyalin daha önce hangi çiftte göründüğü, sipariş orada açılır. Ancak aynı anda iki çiftte bir sinyal belirir. Ve garip bir şekilde, EA genel olarak herhangi bir açık siparişi kontrol etmesine ve ikincisini açmamasına rağmen 2 sipariş açılır. Ve bu, mevduatta yeterli para olmadığı için gereklidir.

Evet, ancak birincisi işi bitirip bir sipariş açtığında, 2.si, çalışmaya başladıktan sonra, siparişin zaten kısa bir süre için orada olduğunu GÖRMEZ. Ya da sipariş açılmadan işe koyulur.
--

Ve bir şey daha: 1. Expert Advisor Sleep(1000) ikincisini ne zaman bekler veya çalışmaya başlar?

Küçük bir depozito ile birkaç çift işlem görmez (dünya tavsiyesi).

Teknik olarak, farklı Uzman Danışmanların toplam sipariş sayısını dikkate alması için aşağıdaki şemayı deneyebilirsiniz:

     int li_total - OrdersTotal ();
     if (li_total == 0 ) Sleep ( 1000 );
    li_total - OrdersTotal ();
     if (li_total == 0 ) OrderSend ();

Ne kadar net çalışacağını bilmiyorum (m / y 2 çalışmalı). "Semafor" sıralı çalışmasını organize ederek, terminalin global değişkenleri aracılığıyla yapmak daha güvenilirdir. Sonra "davul tarafından" kaç danışman paralel çalışacaktır.

Neden: