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

 

Tekrar iyi günler!

İki nazik kişiden cevaplar aldım ama ne yazık ki seçeneklerin hiçbiri çıkmadı.

Sevgili profesyoneller, lütfen bana daha fazla bilgi verin.

Belli bir şemaya göre siparişler açılır, açılış gününde kapanabilir veya 3 gün daha piyasada dolaşabilirler.

3 gündür devam eden bir siparişi bulup, ondan sonra açılan siparişleri kapatmadan kapatabilmek için nasıl kuracağımı çözemiyorum.

Tüm siparişler için açılış şeması aynıdır. Tüm sihirbazlara bir iz bırakıyorum. böylece: Magic_s =Magic_s+1.

Sistemin bu siparişi otomatik olarak bulması ve kapatması için varyant gereklidir, çünkü sistemi geçmiş veriler üzerinde test etmeye ihtiyaç var

Lütfen, birisi bu sorunun nasıl çözüleceğini biliyorsa - cevabı yazın. Çok minnettar olacağım :)

 
Boneshapper :

Anladım. Çok teşekkürler. İyi bir seçenek olarak, bu seçenekle ilgili tek şey, sistemi geçmiş verilere göre test edemiyorum. Burada da bir şekilde otomatik olarak kayıt olmak istedim. Başka seçenekler varsa lütfen yazın.
Geçmişi test etmek için, bir pozisyonu kapatma koşulunu belirlemeniz gerekir. Kar/zarar veya pozisyon ömrü, ör. 3 günden fazla değil. Bu, OrderModify ile siparişin/pozisyonun tarih/saat sona erme tarihini değiştirerek yapılabilir.
 
paladin80 :
Geçmişi test etmek için, bir pozisyonu kapatma koşulunu belirlemeniz gerekir. Kar/zarar veya pozisyon ömrü, ör. 3 günden fazla değil. Bu, OrderModify ile siparişin/pozisyonun tarih/saat sona erme tarihini değiştirerek yapılabilir.

Evet, görünüşe göre kapanış koşullarımız olacak - bu pozisyonun ömrü, her şey doğru, en fazla 3 gün. Tam olarak anlayana kadar OrderModify hakkında okudum. Bu gece çözmeye çalışacağım. Çok hızlı cevabınız için tekrar teşekkürler :)
 

Üzgünüm, dilde değil, ama çok gerekli, belki birileri biliyordur.

Windows 7'de bazı dosyalar açılmayı reddetti. "Birlikte aç ..." a basıyorum, programı seçiyorum ve program seçim listesinde GÖRÜNMÜYOR. Bu sınırlamanın nasıl kaldırılacağını bilen var mı? XP için durum böyle değildi. Kahrolası yedi zaten tüm beyni yedi :(

Kayıt defterini temizlemeniz gerektiğinden şüpheleniyorum. Özellikle, FB2 formatı çift tıklayarak açılmaz. CoolReader'ı başlatıyorum ve her şey yolunda. onlara açılır. fb2 dosya biçimini çalıştırmak için çift tıklamak istemiyor.

JV-16 yardımcı programıyla kayıt defterinde bir arama başlattım (her zaman kullandım) - bu yüzden fb2'den bahsedildiği kadar çok kayıt satırı buldu ki bu sadece korkunç - öldürmek korkutucu. Ne yapalım? Google arama hiçbir şey çıkmadı :(

 

Selamlar!

kodu değiştirmeye yardım edin. Kod yeni değil, ama bir şey benim için çalışmıyor.

işte kod:

  * ///-----------------Закрытие по истории в безубыток--------------------
   //---------------------расчет по истории ордеров номера очередной итерации----------------------------------------------- 
  Iteration = 0 ; // зануляем инерации перед их учетом в цикле по истории
  Sum_Loss = 0 ;   // суммарный убыток по этим итерациям

datetime 
Time_at_History_Current = 0 ,
Time_at_History_Previos = 0 ;     
 
 if ( OrdersHistoryTotal () != 0 )
   {
     for ( int counter = OrdersHistoryTotal ()- 1 ; counter >= 0 ; counter--)
      {
       OrderSelect (counter, SELECT_BY_POS, MODE_HISTORY);
       if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
         {
           if ( OrderType () == OP_BUY || OrderType () == OP_SELL)
            {
             if ( OrderProfit () < 0 ) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера
                                   // для последующего его анализа при подсчете количества итераций
                {
                 double lastLoss = OrderProfit ();
                 Sum_Loss=Sum_Loss+lastLoss;   // считаем общий убыток по закрытым подряд убыточным ордерам
                 Time_at_History_Current = OrderCloseTime ();
                } 
             
             //Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));
             //Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
             
             if (Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
               {
                Time_at_History_Previos = Time_at_History_Current ;
                Iteration++;
                 //Print("Iteration at History в условии сравнения  = ",  Iteration);
               }   
             else // они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
               {
                 if ( OrderProfit () >= 0 )
                   break ;
               }
            }
         }
      }
   }

if (Sum_Loss < 0.0 ) { // Имеем убыток по закрытым позам
   if ((( AccountEquity () + Sum_Loss + (Sum_Loss * 0.25 )) >= AccountBalance ()) && (((totalSell > 0 ) && (totalBuy < 1 )) || ((totalSell < 1 ) && (totalBuy > 0 )))) { // Достигли безубытка
     // Здесь какой-то код, который необходимо выполнить при достижении безубытка
        CloseAllBuy();
           CloseAllSell();
           Sum_Loss = 0.0 ;
           
  
  }
}
//-----------------------------------------------------------------

Ne kadar uğraşırsam uğraşayım, eksi bir anlaşmaya varıldığında döngünün açılması için her şeyi yapamadım ve sonra olumlu bir anlaşmaya varıldığında, eksi bir anlaşma olsaydı, eksi bakiyeyi azaltırdım. sıfırdan büyük olan son siparişin kapalı karı. Yani, emir negatif olarak kapanırsa, o zaman çalışmaya başlarız, eğer bir sonraki kâr ticareti kayıptan büyükse, o zaman kapatırız, eğer bir sonraki ticaret artıda kapanırsa, ancak bu artı bir eksiden fazla değilse, önceki siparişler için, eksi bakiyeden bu artıyı çıkarırız ve bir sonraki siparişi, ondan önce kırmızıda kapattığımız için zaten daha düşük olan yeni göstergeyle karşılaştırırız. Trol üzerinde kapatıyoruz. Bu nedenle, pozitif bir dengeye izin verilir.

 
drknn :

Üzgünüm, dilde değil, ama çok gerekli, belki birileri biliyordur.

Windows 7'de bazı dosyalar açılmayı reddetti. "Birlikte aç ..." a basıyorum, programı seçiyorum ve program seçim listesinde GÖRÜNMÜYOR. Bu sınırlamanın nasıl kaldırılacağını bilen var mı? XP için durum böyle değildi. Kahrolası yedi zaten tüm beyni yedi :(

Kayıt defterini temizlemeniz gerektiğinden şüpheleniyorum. Özellikle, FB2 formatı çift tıklayarak açılmaz. CoolReader'ı başlatıyorum ve her şey yolunda. onlara açılır. fb2 dosya biçimini çalıştırmak için çift tıklamak istemiyor.

JV-16 yardımcı programıyla kayıt defterinde bir arama başlattım (her zaman kullandım) - bu yüzden fb2'den bahsedildiği kadar çok kayıt satırı buldu ki bu sadece korkunç - öldürmek korkutucu. Ne yapalım? Google arama hiçbir şey çıkmadı :(


Başlat - Tüm Programlar - Varsayılan Programlar - Eşlemeleri Ayarla
 
drknn :

Üzgünüm, dilde değil, ama çok gerekli, belki birileri biliyordur.

Windows 7'de bazı dosyalar açılmayı reddetti. "Birlikte aç ..." a basıyorum, programı seçiyorum ve program seçim listesinde GÖRÜNMÜYOR. Bu sınırlamanın nasıl kaldırılacağını bilen var mı? XP için durum böyle değildi. Kahrolası yedi zaten tüm beyni yedi :(

Kayıt defterini temizlemeniz gerektiğinden şüpheleniyorum. Özellikle, FB2 formatı çift tıklayarak açılmaz. CoolReader'ı başlatıyorum ve her şey yolunda. onlara açılır. fb2 dosya biçimini çalıştırmak için çift tıklamak istemiyor.

JV-16 yardımcı programıyla kayıt defterinde bir arama başlattım (her zaman kullandım) - bu yüzden fb2'den bahsedildiği kadar çok kayıt satırı buldu ki bu sadece korkunç - öldürmek korkutucu. Ne yapalım? Google arama hiçbir şey çıkmadı :(

http://rhpc.ru/topic/200/
 

Beyler... kim bilir yardım edin!!!!


Stratejinin özü: Stokastik sinyalde (5,14,3) giriş, stokastikte de sadece farklı bir periyotla (5,3,3) çıkış. Öyleyse, ters sinyalde değil de stokastikte nasıl çıkış yapabileceğinizi anlamıyorum?
Bir sorunum var ve nasıl çözüleceğine dair hiçbir fikrim yok, açıklamaya çalışacağım.
Yani gönderdiğim kodda 2 fonksiyon var
//+------------------------------------------- --------------------+
//| kapanış için bir dizi bilet hazırlayın |
//+------------------------------------------- --------------------+
void ReadTicketsToClose(int sinyal, bool Revers, int & TicketClose[][2], double & lot[],double arrayTickets[][9])
{
int size=ArrayRange(arrayTickets,0);
//----
if (boyut==0) dönüş;

int i,type,bilet,kapatSize;
için (i=0;i<size;i++)
{
type=arrayTickets[i][1];
// emir türü market değilse, atla
(type>OP_SELL) devam ederse;

if (Ters) // piyasa emri türünü tersine çevir
{
if (type==OP_BUY) type=OP_SELL; başka tip=OP_BUY;
}

// burada her açık sipariş için kaderine karar veriyoruz
// piyasada bırakın veya kapanışta diziye ekleyin
if (tür==OP_BUY)
{
//
// satın alma işleminden ayrılmaya izin veren kod

// Örnek olarak
(signal==OP_BUY) devam ederse;
}

if (tür==OP_SEL)
{
//
// satıştan ayrılmaya izin veren kod

// Örnek olarak
(sinyal==OP_SELL) devam ederse;
}


closeSize=ArrayRange(ticketsClose,0);
ArrayResize(ticketsClose,closeSize+1);
ArrayResize(lots,closeSize+1);
TicketClose[closeSize][0] = arrayTickets[i][0]; // # bilet
TicketClose[closeSize][1] = arrayTickets[i][1]; // sipariş türü

// burada kaç lotun kapatılması gerektiğini belirtiyoruz
lot[closeSize] = arrayTickets[i][2]; // kapalı hacim
// kısmen kapatılabilir, o zaman satırı yukarıdan yeniden yazmanız gerekir
}
//----
dönüş;
}

//+------------------------------------------- --------------------+
//| Belirtilen biletlerle siparişleri kapatır |
//+------------------------------------------- --------------------+
void CloseMarketOrders(int biletArray[][2], çift lotArray[])
{
//----
int i,size=ArrayRange(ticketsArray,0);
if (boyut==0) dönüş;

int bilet,tür;
çift lot;
bool res;

int toplam=SiparişToplam();

için (i=0;i<size;i++)
{
bilet = biletArray[i][0];
type = ticketArray[i][1];
lot = lotArray[i];
Yeniler(); // her ihtimale karşı, pazar ortamı hakkındaki bilgileri güncelleyin

// satın almaları kapatmak için blok
if (tür==OP_BUY)
{
res = OrderClose(bilet,lot,Teklif,Kayma,Turuncu);
eğer (! res)
{
Print("Satın alma siparişi # kapatılamadı",bilet,"! Hata #",GetLastError());
// daha fazla hata işleme, kendiniz yazın
}
}

// satış kapanış bloğu
if (tür==OP_SEL)
{
res = OrderClose(bilet,lot,Ask,Kayma,Turuncu);
eğer (! res)
{
Print("Satış emri # kapatılamadı",bilet,"! Hata #",GetLastError());
// daha fazla hata işleme, kendiniz yazın
}
}

}
//----
dönüş;
}

Void ReadTicketsToClose(int signal, bool Revers, int & TicketClose[][2], double & lot[],double arrayTickets[][9]) işlevinde, siparişten ayrılmaya karar vereceğiniz bir koşul ayarlamanız gerekir yada kapat...
Koşulları ayarlamayı denedim ama işe yaramıyor....
Belki birisi bu işlevlerde bir hata olup olmadığına bakar ve ben mi karıştırdım ....
Dosyalar:
osc_test.mq4  37 kb
 
Teklif akışında teklif 0 olabilir mi? (bazen) işlem seansı sırasında
 
tara :

Başlat - Tüm Programlar - Varsayılan Programlar - Eşlemeleri Ayarla

Bu işlem, program seçim penceresine götürür. Bir program belirliyoruz ve orada görünmüyor.