[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 665

 
Roger :
Sıfır çubuğundan değil, ilkinden itibaren en yüksekleri ve en düşükleri sayın, sıfır çubuğunda Teklif Min'den az olamaz.
Yani i=1; ? Teklif Et ve Sor'a dokunmayın mı?
 
eugggy :
çift
Min=Teklif, değişken bildirimi

maks=teklif,

___________________________________________________________________________________________

(i=0;i<=20-1;i++) açılış kriterleri için

{
if (Düşük[i]<Min) Min=Düşük[i]:
if (Yüksek[i]>Maks) Maks=Yüksek[i];

}

if (.................&&Sor>Maks)

{

Opn_B=doğru; // Satın Al'ı aç

}

if (................&&Teklif<Min)

{

Opn_S=doğru; // Satışı aç

}

__________________________________________________________________________________________

Bu kadar çirkin bir şekilde pişmanım - kod çalışmadığı için hafızadan yazmak zorunda kaldım ve sildim. Ama siz bir profesyonel olarak açık olmalısınız (umarım).

___________________________________________________________________________________________

Beni pohpohluyorsun :)) Bende senin gibi acemiyim...

extremumprice.mq4 
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
extern int   Quant_Bars  = 30 ;                     // Количество баров
bool         OpnBuy      = false ,
            OpnSell     = false ;
//--------------------------------------------------------------------
int start()                                     // Спец. функция start
  {
   int i;                                       // Номер бара 
   double Minimum=Bid,                           // Минимальная цена
          Maximum=Bid;                           // Максимальная цена
 
   for (i= 0 ;i<=Quant_Bars- 1 ;i++)                 // От нуля (!) до..
     {                                           // ..Quant_Bars-1 (!)
       if (Low[i]< Minimum)                       // Если < известного
         Minimum=Low[i];                         // то оно и будет мин
       if (High[i]> Maximum)                     // Если > известного
         Maximum=High[i];                       // то оно и будет макс
     }
//--------------------------------------------------------------------

   if (iOpen(NULL, 0 , 1 )>Maximum)
      {
         OpnBuy = true :
         OpnSell= false ;
      }
   if (iOpen(NULL, 0 , 1 )<Minimum)
      {
         OpnSell= true ;
         OpnBuy = false :
      }   
//-------------------------------------------------------------------
//  А тут код открытия позиций.  if (OpnBuy)  {открываем Бай};
//                               if (OpnSell) {открываем Селл};
// Но обязательно нужно сделать проверку на существование уже открытой позиции,
// иначе они будут открываться на каждом тике пока присутствует сигнал...
   return ;                                       // Выход из start()
  }
//--------------------------------------------------------------------
Böyle bir yerde. Kontrol etmedim, bu yüzden buldozerden dizimin üzerine yazdım ...
 
artmedia70 :

Pekala, işte mantık:

1. Magic ile bekleyen bir emir verin, diyelim ki 101 ve emri pozisyona dönüştürmek için bayrağı sıfırlayın, diyelim ki ConvOrd=false;

2. magic 101 ile bir pozisyon olup olmadığını kontrol edin, eğer öyleyse, ConvOrd=true dönüşüm bayrağını ayarlayın;

3. ConvOrd'un doğru olup olmadığını ve ConvOrd==true olup olmadığını kontrol edin,
magic 101 ile bir pozisyonun varlığını kontrol edin ve mevcut değilse -
zaten kapalı demektir.

{ConvOrd=false bayrağını sıfırlayın; yeni bir ertelenmiş ayarla;}

Bence bayraksız da yapabilirsiniz...


Mantık benim için açık, ancak bunu kodda nasıl uygulayacağımı bilmiyorum. Birçok seçeneği denedim ama başarılı olamadım. Bence çaydanlık. Bu yüzden buraya yazdım. 663. sayfada kodumu gösterdim. Bir arzu varsa - bitirin ya da en azından bana daha spesifik olarak nasıl bitireceğimi söyleyin. Teşekkür ederim.
 
artmedia70 , Roger yardım için teşekkürler. Sanırım anladım, aslında 0. çubuktaki fiyat minimum ve maksimumdan daha düşük ve daha yüksek olamaz, bunu düşünmedim ve Min değişkeninin değeri olarak Ask ekledim, şimdi çalışıyor gibi görünüyor. artmedia70 , bana kıyasla, profesyonellerin çoğu))). Tekrar teşekkürler.
 
dimon74 :
Mantık benim için açık, ancak bunu kodda nasıl uygulayacağımı bilmiyorum. Birçok seçeneği denedim ama başarılı olamadım. Bence çaydanlık. Bu yüzden buraya yazdım. 663. sayfada kodumu gösterdim. Bir arzu varsa - bitirin ya da en azından bana daha spesifik olarak nasıl bitireceğimi söyleyin. Teşekkür ederim.

SellStop siparişi verirken daha basit deneyin, TakeProfit değerini unutmayın ve Teklif bu fiyatın altına düşerse Satın Al'a yerleştirin.
 
Roger :

SellStop siparişi verirken daha basit deneyin, TakeProfit değerini unutmayın ve Teklif bu fiyatın altına düşerse Satın Al'a yerleştirin.
Tavsiye için teşekkürler! Bu seçeneği zaten denedim, ancak stratejimi uygulamak için uygun değil.
 
dimon74 :
Tavsiye için teşekkürler! Bu seçeneği zaten denedim, ancak stratejimi uygulamak için uygun değil.
Profesyoneller için beni bağışlayın, ama yine de size Igor Kim'den faydalı işlevlerin bir listesini vereceğim, kendiniz görün ve tasarlayın ... :)
Dosyalar:
 

Neden aynı anda iki kilitleme konumu ayarlandığını bile anlamıyorum. Mantık şu:

Öz sermaye önceki değerinden belirli bir kâr oranına ulaştığında tüm pozisyonları kapatıyoruz... Olması gerektiği gibi çalışıyor... Devamı...

Hisse senedi önceki değerinin belirli bir yüzdesi kadar düştüğünde, en büyük zararı olan pozisyonu ararız, kim olduğunu belirleriz ... işte Al veya Sat.

ve ikiye katlanmış bir parti ile ters yönde bir kilitleme pozisyonu açın. Ardından, toplam kârlarına (zarar ve kilitleme) bakarız ve büyür büyümez,

peki 10 puan diyelim kapat nafig...

İşin mantığına göre bir sonraki tikte önce eşitlik kontrol edilmeli ve orada her şey yolundaysa çalışmaya devam ediyoruz efendim... Yine her şey kötüyse sıradaki geyiği arıyoruz. ..

Ama nedense benim için aynı anda iki kilitli olanı açıyor ... hem Al hem Sat, üstelik lot 0.1 ise, o zaman ilk kilitleme çift lot ile açılıyor = 0.2,

ikincisi ise tekrar ikiye katlıyor ve şimdiden çok fazla 0.4 ile açılıyor... Buna göre, burada kilit nedir, eğer şimdi Güneşin altında bir yer için birbirleriyle savaşıyorlarsa... :(

Kodu ekliyorum, belki biri beni parmağımla dürter.

 //----------------- Закрытие позиций если эквити выросло на N процентов ---------------------------
            
   if (Equ_NEW>=Equ_OLD+EquPerc)                       // Новое эквити больше старого на процент прибыли..
   {                                         
//      ClosePosBySizeLossInCurrency(NULL, -1, -1, 0); // Закрытие всех убыточных позиций
      ClosePosFirstProfit( NULL , - 1 , - 1 );           // Закрываем все позиции, сначала прибыльные
      DeleteOrders( NULL , - 1 , - 1 );                   // Удаляем ордера
      Equ_NEW=AccountEquity();                     // Запоминаем новое значение эквити
      Equ_OLD=Equ_NEW;                             // и вписываем его в "старое"
      CountClsEQU++;                               // Увеличиваем счётчик кол-ва закрытий для ф-ции вывода информации
      LockBuy51 =true;                             // Разрешаем открытие локирующих
      LockSell51=true;                             // позиций Buy и Sell
      OpnBuy51  =true;                             // и вообще разрешаем открываться
      OpnSell51 =true;                             // в любую сторону... 
   }

//------------- Включение вывода убыточных позиций в ноль, если эквити упало на N процентов -----------------------
               
   if (Equ_NEW<=Equ_OLD-EquPerc/ 2 )                 // Новое эквити меньше старого на столько-то процентов...
      {                                         
         Trade=false;                               // Запрещаем торговлю
//-------------- Закрытие двух позиций, если ранее был установлен лок на убыточную ------------- 
        
         if ( OrderSelect (TicketLoss, SELECT_BY_POS, MODE_TRADES))     // Выбираем убыточную позицию (если её тикет
            {                                                         // ранее был сохранён в TicketLoss)
               double prloss=OrderProfit()+OrderSwap();               // Размер профита убыточной позиции
               int typeloss =OrderType();                             // Тип убыточной позиции
               int mnloss   =OrderMagicNumber();                     // Magic убыточной позиции
            }
         if ( OrderSelect (TicketLock, SELECT_BY_POS, MODE_TRADES))     // Выбираем локирующую позицию (если её тикет
            {                                                         // ранее был сохранён в TicketLock)
               double prlock=OrderProfit()+OrderSwap();               // Размер профита локирующей позиции
               int typelock =OrderType();                             // Тип локирующей позиции
            }
         if (prloss+prlock>= 10 * Point )                                 // Если их суммарный профит больше 10 пунктов
            {
               ClosePositions( NULL , typelock, 5100 );           // Закрываем локирующую позицию
               ClosePositions( NULL , typeloss, mnloss);         // Закрываем убыточную позицию
            }
//--------------- Поиск убыточной позиции и установка локирующей -------------------------  
       
         double Loss= 0 ;                                         // Последнее значение убытка
         int     i, k= OrdersTotal (), OrdTicket=- 1 ;

         for (i=k- 1 ; i>= 0 ; i--) {                               // Цикл по всем ордерам терминала
             if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
               if ((OrderProfit()+OrderSwap()< 0 )) {             // Если профит позиции меньше 0
                   if (Loss>OrderProfit()+OrderSwap()) {         // Если последнее значение убытка больше убытка позиции  
                     Loss=OrderProfit()+OrderSwap();           // Значит тут убыток больше, запоминаем как последнее
                     OrdTicket=i;                               // Запоминаем номер убыточной позиции
                  }
               }
            }
         }
             if (OrdTicket>= 0 ) {
               if ( OrderSelect (OrdTicket, SELECT_BY_POS, MODE_TRADES)) {   // Выбираем позицию по тикету
                  TicketLoss=OrdTicket;                                     // Запоминаем как тикет убыточной позы
                   if (OrderType()==OP_BUY)                                 // Если её тип Бай
                     {
                        Magic= 5100 ;                                               // Задаём магик... 
                        New_Comm= "Sell_M5_Стратегия_1_Локирующая позиция" ;       // Задаём комментарий для позиции
                        Lots_New=NormalizeLot(OrderLots()* 2 , False, NULL );       // Увеличим лот в два раза
                         if (!ExistPositions( NULL , OP_SELL, 5100 , 0 )){             // Если нет локирующего Sell
                        OpenPosition( NULL ,OP_SELL,Lots_New, 0 ,pb-tp* 100 *po,Magic,New_Comm);} // Открываем локирующий...
                         if (ExistPositions( NULL , OP_SELL, 5100 , 0 ))               // Проверяем, заодно и выбираем её
                              {TicketLock=OrderTicket();}                         // Сохраняем тикет локирующего Sell
                     }
                   if (OrderType()==OP_SELL)
                     {
                        Magic= 5100 ;                                               // Задаём магик... 
                        New_Comm= "Buy_M5_Стратегия_1_Локирующая позиция" ;         // Задаём комментарий для позиции
                        Lots_New=NormalizeLot(OrderLots()* 2 , False, NULL );       // Увеличим лот в два раза
                         if (!ExistPositions( NULL , OP_BUY, 5100 , 0 )){             // Если нет локирующего Buy
                        OpenPosition( NULL ,OP_BUY,Lots_New, 0 ,pa+tp* 100 *po,Magic,New_Comm);} // Открываем локирующий...
                         if (ExistPositions( NULL , OP_BUY, 5100 , 0 ))               // Проверяем, заодно и выбираем её
                              {TicketLock=OrderTicket();}                         // Сохраняем тикет локирующего Buy
                     }
               }
            }
         }

İle başlayan

 //------------- Включение вывода убыточных позиций в ноль, если эквити упало на N процентов -----------------------

bir yerlerde söve yaşıyor ...

 

SAYFA NUMARASI " 666 " :-)

 
Korkunç... Vay canına!!!