Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 869

 
Top2n :

Affedersiniz, aynı şeye yüzlerce kez başvurmak ayıp.

Neredeyse bir aydır kapıda bir koç gibi bakıyorum. Onu almam.

Görev, hareketli ortalama 13 olan daha küçük bir düzenin hareketli ortalamasını hesaplamaktır.

yani 12. dönemi 13'e göre hesaplayın

Hesaplaması kolaydır: Y(N)=1/N*(Y(N+1)*(N+1)-X[N]), burada Y(i) MA(i)'nin değeridir. sıfır çubuk, X[j ] - j-inci çubuktaki fiyat değeri; sadece bu hesaplama saçmalığıdır, ancak yine de geleceğe bakmanıza izin vermez.
 

Merhaba! Saygın gurulardan biri, çek, pliz, ilk danışmanım. Devam etmek mümkün mü? Belki bir şey kaçırdı? Herhangi bir özellik için çok minnettar olurum. Ve bir şey daha: forumda bir yerde sadece bir pozisyonun nasıl açılacağını gördüm, ama kopyalamadım ve şimdi bulamıyorum. Yardım edin lütfen.

Teşekkür ederim!

// Deneme EA

//------------------------------------------------ --------------------

//------Giriş verileri:------------------------------------------ --------------------

giriş çift Lot = 0.1; // Çok güzelsin

input int MovingPeriod =5; // Uzlaşma dönemi MA

giriş int MovingShift =0; // MA'yı Kaydır

giriş int InpBandsPeriod=10; // Dönem Bollinger Bantları

giriş int InpBandsShift=0; // Bollinger Bantlarını Kaydır

çift giriş InpBandsDeviations=2.0; // Sapma Bollinger Bantları

girdi int K_Period =30; // %K Stokastik dönem

giriş intD_Period=10; // %D Stokastik dönem

girdi int Yavaş şafak =8; // Stokastik Yavaşlama

giriş rengi clMainStoch =Sarı; // Stokastik ana hattın rengi

giriş rengi clSignalStoch =Kırmızı; // Stokastik sinyal çizgisi rengi

// -----Genel Değişkenleri Bildir:------------------------------------------ --------- ---

çift MA_0, MA_1, MA_2; // 0, 1 ve 2 barda MA değeri

çift MB_0, MB_1, MB_2; // 0, 1 ve 2 çubuklarda ortalama Bollinger değeri

doubleExtUpperBuffer[]; // Üst Bollinger Doğrusu Değeri

çift ExtLowerBuffer[]; // Alt Bollinger Doğrusu Değeri

çift Delta_0, Delta_1; // Üst ve alt değerler arasındaki fark...

// ... 0 ve 1 çubuklarında bollinger çizgileri

çift Sarı_0, Sarı_1, Sarı_2; // 0, 1 ve 2 barda ANA değer

çift Red_0, Red_1, Red_2; // 0, 1 ve 2 barda SİNYAL değeri

//-------Gitmek!--------------------------------------- ---------------------------

int start() //Özel. başlatma işlevi

{

//MA gösterge işlevine atıfta bulunarak

MA_0=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);

MA_1=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,1);

MA_2=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,2);

// Bollinger Bantları işlevini çağırma

MB_0=iBands(NULL,0,InpBandsPeriod,InpBandsShift,InpBandsDeviations,PRICE_CLOSE,0);

MB_1=iBands(NULL,0,InpBandsPeriod,InpBandsShift,InpBandsDeviations,PRICE_CLOSE,1);

MB_2=iBands(NULL,0,InpBandsPeriod,InpBandsShift,InpBandsDeviations,PRICE_CLOSE,2);

Delta_0=iBands(ExtUpperBuffer[0]-ExtLowerBuffer[0]);

Delta_1=iBands(ExtUpperBuffer[1]-ExtLowerBuffer[1]);

// Stokastik fonksiyonu çağırmak

Yellow_0=iStochastic(NULL,0,K_Period,D_Period,Yavaş Şafak,MODE_SMA,0,MODE_MAIN,0);

Yellow_1=iStochastic(NULL,0,K_Period,D_Period,Yavaş Şafak,MODE_SMA,0,MODE_MAIN,1);

Yellow_2=iStochastic(NULL,0,K_Period,D_Period,Yavaş Şafak,MODE_SMA,0,MODE_MAIN,2);

Red_0=iStochastic(NULL,0,K_Period,D_Period,Yavaş Şafak,MODE_SMA,0,MODE_SIGNAL,0);

Red_1=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_SIGNAL,1);

Red_2=iStochastic(NULL,0,K_Period,D_Period,Yavaş Şafak,MODE_SMA,0,MODE_SIGNAL,2);

//-------Stokastik durumlar:------------------------------------- - ---------------

//Piyasa aşırı satın alındı

double MOB()=(Yellow_0>=80 && Red_0>=80); //Yerel değişken

//Piyasa aşırı satıldı

double MOS()=(Yellow_0<=20 && Red_0<=20); //Yerel değişken

//Pazar tamam

double MN()=(20<Yellow_0<80 && 20<Red_0<80); //Yerel değişken

//Kritik durum

double MC1()=(20<Yellow_0<80 && Red_0<=20); //Yerel değişken

double MC2()=(20<Yellow_0<80 && Red_0>=80); //Yerel değişken

double MC3()=(20<Red_0<80 && Yellow_0<=20); //Yerel değişken

double MC4()=(20<Red_0<80 && Yellow_0>=80); //Yerel değişken

//------Bir pozisyon açmak için örnek (benim) emrim-------------------------------- --------------------


if (Delta_0 > Delta_1 && MOB()==true) // Piyasa aşırı satın alındı ama delta genişliyor

{ if (MB_2 > MB_1 && MB_1 < MB_0) //Alt Bollinger Break

OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point);//bir SATIN AL emri aç

Uyarı(GetLastError()); //Hata mesajı

Alert("Konum açık lot("Lot"),price("Sor")."); // Satın alma mesajı

 

Takipte: AL (ve HÜCRE) pozisyonları, pozisyonun açıldığı koşullara bağlı olarak farklı koşullar altında açılabilir. (ör. BYE) kendi kapanış koşullarına sahip olacaktır.

Bunu MKL dilinde nasıl iletebiliriz?

 
rapid_minus :

Takipte: AL (ve HÜCRE) pozisyonları, pozisyonun açıldığı koşullara bağlı olarak farklı koşullar altında açılabilir. (ör. BYE) kendi kapanış koşullarına sahip olacaktır.

Bunu MKL dilinde nasıl iletebiliriz?

Bir döngüde bir sipariş seçme . Bu Bai ise ve verilerin geri kalanı (sembol, sihir, başka bir şey) "kendi kapanış koşulları" altında kapatılması gerekenin bu olduğu kriterini karşılıyorsa, "kendi kapanış koşulları" mevcutsa onu kapatırız. .
 
artmedia70 :
Bir döngüde bir sipariş seçiyoruz. Bu Bai ise ve verilerin geri kalanı (sembol, sihir, başka bir şey) "kendi kapanış koşulları" altında kapatılması gerekenin bu olduğu kriterini karşılıyorsa, "kendi kapanış koşulları" mevcutsa onu kapatırız. .

Benim için biraz belirsiz, ama biraz araştırınca anlayacağımı düşünüyorum. Sovyetler ülkesinden bazı yoldaşlar gibi, geri dönmediğiniz ve bilginin doruklarından öğretmediğiniz için çok teşekkür ederim.

Şöyle kapatmayı düşündüm:

//-------Örnek (benim) emrim kapanış bağlamalı bir pozisyon açmak için (bilet ile)--------------------------- ----------------------------

// SATIN AL emrini açan yerel değişken (63. satır yerine)

int Ticket_1() = (OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Puan,Bid+1500*Puan));

//------O zaman bu özel siparişin kapanışı aşağıdaki gibi olabilir:----------------------------- ------------------------

if (Ticket_1()==true) //1. sipariş açıldıysa, o zaman...

{ if (Yellow_0>Red_0 && (Yellow_0-Red_0)<(Yellow_1-Red_1)) //Sarı kırmızının üzerinde, daralma(koşul)

{ if (MA_2 < MA_1 && MA_1 > MA_0);} //Ortanın üst kırılması (koşul)

else (Yellow_0>Red_0 && (Yellow_0-Red_0)>(Yellow_1-Red_1)) //Sarı kırmızının üzerinde, extension(alternatif koşul)

{ if (MB_2 < MB_1 && MB_1 > MB_0);} //Üst Bollinger Arası (koşul)

bool Ans=SiparişKapat(Ticket,Lot,Bid,0); //...bir siparişi kapatma (yerel değişken)

Alert("Siparişi partiye göre kapatmaya çalış("Lot"),price("Sor"). Cevap bekleniyor..");

if (Ans==true) // Anladım :)

{

Uyarı ("Lot bazında kapalı emir ("Lot"), kapanış fiyatı ("Teklif");

kırmak; // Pozisyon kapatma döngüsünden çık

}


}

Lütfen bir önceki gönderiye göre de bir analiz yapın. Kalıcı olduğum için üzgünüm, ama görüyorsunuz - sorumlu olan tek kişi sizsiniz ... Teşekkürler!

 
//-------Пример(мой) приказа на открытие позиции с привязкой закрытия (по тикету)----------------------------------------------------- 
                                                      
                                                      //Локальная переменная, открывающая ордер БАЙ(вместо строки 63)
   int Ticket_1() = (OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point));
   
        //-------Тогда закрытие именно для этого приказа может быть таким:-----------------------------------------------------
    
    if (Ticket_1()==true)                              //Если был открыт ордер №1, то...
     { if (Yellow_0>Red_0 && (Yellow_0-Red_0) < (Yellow_1-Red_1)) //Желтая выше красной, сужение(условие)
        { if (MA_2 < MA_1 && MA_1 > MA_0);}                      //Верхний перелом Средней (условие)
       else (Yellow_0>Red_0 && (Yellow_0-Red_0)>(Yellow_1-Red_1)) //Желтая выше красной, расширение(альтерн.условие)
         { if (MB_2 < MB_1 && MB_1 > MB_0);}                      //Верхний перелом Боллинджера (условие)
       
       bool Ans=OrderClose(Ticket,Lot,Bid,0);          //...закрытие ордера (лок.переменная)                                               
   Alert("Попытка закрыть ордер БАЙ лотом("Lots"),цена("Ask"). Ожидание ответа..");
   if (Ans==true)                                     // Получилось :)
        {
         Alert ("Закрыт ордер БАЙ лотом("Lots"),цена закрытия("Bid");
         break;                                       // Выход из цикла закрытия позиции
        }

     }
Okuması çok daha kolay. Afedersiniz.
 
rapid_minus :

Benim için biraz belirsiz, ama biraz araştırınca anlayacağımı düşünüyorum. Sovyetler ülkesinden bazı yoldaşlar gibi, geri dönmediğiniz ve bilginin doruklarından öğretmediğiniz için çok teşekkür ederim.

Şöyle kapatmayı düşündüm:

...

Lütfen bir önceki gönderiye göre de bir analiz yapın. Kalıcı olduğum için üzgünüm, ama görüyorsunuz - sorumlu olan tek kişi sizsiniz ... Teşekkürler!

Her şey bir şekilde senin için karanlık.

1. Bir Satın Alma emrini kapatmak için bir koşulun meydana geldiği gerçeğini belirleyin

2. Bir döngüde, tüm açık pozisyonlara bakarsınız ve gerekli Satın Alma emrini bulduğunuzda kapatırsınız.

İşte örnek bir döngü:

 void ClosePositions( string symbol, int type, int magic) {
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) {       // цикл по открытым ордерам
       if ( OrderSelect (i,SELECT_BY_POS)) {         // выбираем ордер по индексу
         if (OrderMagicNumber()!=magic) continue ; // если магик не искомый - ищем дальше
         if (OrderSymbol()!=symbol)     continue ; // если символ не тот - ищем дальше
         if (OrderType()!=type)         continue ; // если тип ордера не тот - ищем дальше
         // здесь, если ордер выбран, то он соответствует нужным критериям,
         // вызов функции закрытия выбранного ордера по тикету
         }
      }   
   }

Yani, mevcut sembolde (Uzman Danışmanın çalıştığı grafikte) ve magic 100500 ile (örneğin) bir Buy emrini kapatmak için fonksiyonu şu şekilde çağırmanız gerekir:

ClosePositions( Symbol (),OP_BUY, 100500 );

100500 sayısını yazmaya gerek yoktur, genellikle sihir zaten EA değişkeninde ayarlanmıştır, örneğin int Magic = 100500; Ardından 100500 yerine Magic'e girmeniz gerekir.

Seçilen pozisyonun kapatılması gereken döngüde, biletle bir siparişi kapatmak için fonksiyona bir çağrı olması gerektiğinden hiçbir şey yazmadım. Genellikle ticari sunucu dönüş kodlarının işlenmesiyle birlikte tam teşekküllü bir işlevin çağrısıdır. Doğrulama için, seçilen siparişi kapatmak için basit bir komut girebilirsiniz OrderClose();

 
rapid_minus :
Okuması çok daha kolay. Afedersiniz.

Yinelenenleri oluşturmamak için eski gönderiyi düzenleme fırsatı hala var;)

 
evillive :
Yinelenenleri oluşturmamak için eski gönderiyi düzenleme fırsatı hala var;)
Denendi, ancak SRC artık eklemiyor.
 
artmedia70 :

Her şey bir şekilde senin için karanlık.

1. Bir Satın Alma emrini kapatmak için bir koşulun meydana geldiği gerçeğini belirleyin

2. Bir döngüde, tüm açık pozisyonlara bakarsınız ve gerekli Satın Alma emrini bulduğunuzda kapatırsınız.

İşte örnek bir döngü:

Yani, mevcut sembolde (Uzman Danışmanın çalıştığı grafikte) ve magic 100500 ile (örneğin) bir Buy emrini kapatmak için fonksiyonu şu şekilde çağırmanız gerekir:

100500 sayısını yazmaya gerek yoktur, genellikle sihir zaten EA değişkeninde ayarlanmıştır, örneğin int Magic = 100500; Ardından 100500 yerine Magic'e girmeniz gerekir.

Seçilen pozisyonun kapatılması gereken döngüde, biletle bir siparişi kapatmak için fonksiyona bir çağrı olması gerektiğinden hiçbir şey yazmadım. Genellikle bu, ticaret sunucusu dönüş kodlarının işlenmesiyle tam teşekküllü bir işlevin çağrısıdır. Doğrulama için, seçilen siparişi kapatmak için basit bir komut girebilirsiniz OrderClose();


Teşekkür ederim. Ama anladığım kadarıyla, bir sipariş açarken sihir otomatik olarak atanır. Dolayısıyla sihirle bir emrin hangi koşullarda açıldığını belirleyemiyorum ve buna göre hangi koşullarda kapatacağımı da bilmiyorum.
Neden: