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

 
alvlaf :

Verdiğiniz son kod zaten bir adım ileri - herhangi bir işlem açmıyor (bu, yasağın yürürlükte olduğu anlamına geliyor). Ta ki neden hiç olmadığını anlayana kadar. Derginin ekran görüntüsü ektedir.

Değişkenin adı ProfitableSerie idi ve tam tersi bir işleve sahipti. Ve eklenecek bir şey daha

 int OnInit ()                     // abeiks && LRA: замечания приняты)))
{
   if (! GlobalVariableCheck ( "AllowNewOrders" )) GlobalVariableSet ( "AllowNewOrders" , 1 );
   return ( INIT_SUCCEEDED );
}

// OnDeinit больше не нужен

void OnTick ()
{
   if (CountTrades() == 0 ) // Количество ордеров должно равняться нулю
   {
       if ((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) < PriceOpenLastHistOrder(OP_BUY))
      || (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) > PriceOpenLastHistOrder(OP_SELL)))
       // Если последняя сделка убыточная, то открывается такая же, но с увеличенным лотом
      {
         GlobalVariableSet ( "AllowNewOrders" , 0 );
         Type = TypeLastHistOrder();
         if (Type == OP_BUY)  Price = Ask;
         if (Type == OP_SELL) Price = Bid;
         Lot = NormalizeDouble (LotsLastHistOrder()*Multiplier, 2 );
         ticket = OrderSend ( Symbol (), Type, Lot, Price, Slippage, 0 , 0 , IntegerToString (Exp), Magic);
         return;
      }
      if (PriceCloseLastHistOrder() == PriceOpenLastHistOrder() && CountHistTrades() > 0 ) 
      // Если прибыль последней сделки равняется нулю, то открывается такая же
      {
         GlobalVariableSet ( "AllowNewOrders" , 0 );
         Type = TypeLastHistOrder();
         if (Type == OP_BUY)  Price = Ask;
         if (Type == OP_SELL) Price = Bid;
         Lot = NormalizeDouble (LotsLastHistOrder(), 2 );
         ticket = OrderSend ( Symbol (), Type, Lot, Price, Slippage, 0 , 0 , IntegerToString (Exp), Magic);
         return;
      }
      if (((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) > PriceOpenLastHistOrder(OP_BUY))
      || (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) < PriceOpenLastHistOrder(OP_SELL)))
      || CountHistTrades() == 0 ) // Если последняя сделка прибыльная, то открывается ордер
      {
         if ( GlobalVariableGet ( "AllowNewOrders" ) > 0 ) return ;
         if (SignalBuy() && MaxOpenOrders > OrdersTotal ())
         {
            ticket = OrderSend ( Symbol (), OP_BUY, Lots, Ask, Slippage, 0 , 0 , IntegerToString (Exp), Magic);
             if (ticket> 0 ) GlobalVariableSet ( "AllowNewOrders" , 0 );
            return;
         }
         if (SignalSell() && MaxOpenOrders > OrdersTotal ())
         {
            ticket = OrderSend ( Symbol (), OP_SELL, Lots, Bid, Slippage, 0 , 0 , IntegerToString (Exp), Magic);
             if (ticket> 0 ) GlobalVariableSet ( "AllowNewOrders" , 0 );
            return;
         }
      }
      GlobalVariableSet ( "AllowNewOrders" , 1 );
   }
}

Bunu dene. Sanki başka bir şey çıkacakmış gibi hissediyorum...

 
Herkese merhaba, MQL4 öğreticisini okumaya başladım (programlamayı öğrenmek istiyorum), ancak eski bir sürüm var, ne önerirsiniz?Öğreticiyi okuyun, ardından belgeleri?
 
LRA :
// ИХМО так нагляднее
Kabul ediyorum!
 
linar :

Herkese merhaba, MQL4 öğreticisini okumaya başladım (programlamayı öğrenmek istiyorum), ancak eski bir sürüm var, ne önerirsiniz?Öğreticiyi okuyun, ardından belgeleri?

Daha önce C ile programladıysanız, ücretsiz daha basit göstergelerin ve danışmanların kaynaklarına bakmak ve yardımı okumak daha iyidir.

Hiç programlamadıysanız, o zaman... ücretsiz daha basit göstergelerin ve danışmanların kaynaklarına bakın ve yardımı okuyun. )))

Bu forumda ayrıca bir eğitim var: https://www.mql5.com/en/forum/108883

 
A13ksandr :

Değişkenin adı ProfitableSerie idi ve tam tersi bir işleve sahipti. Ve eklenecek bir şey daha

Bunu dene. Sanki başka bir şey çıkacakmış gibi hissediyorum...

Bir adım daha ileri - bot bir ticaret açtı, ancak bu onun sonu oldu. Başka hiçbir şey açılmıyor ve günlükte herhangi bir girişimle ilgili herhangi bir mesaj bile yok ..
 
alvlaf :
Bir adım daha ileri - bot bir ticaret açtı, ancak bu onun sonu oldu. Başka hiçbir şey açılmıyor ve günlükte herhangi bir girişimle ilgili herhangi bir mesaj bile yok ..

Kahretsin, başlangıçta kodun yalnızca bir kısmını doğru şekilde eklemek istedim, ancak daha sonra hepsini kopyaladım ve bu hatayı düzeltmedim. son hali böyle olmalı

         if ( GlobalVariableGet ( "AllowNewOrders" ) == 0 ) return ;

Ancak genel olarak, o zaman tek bir anlaşma yapmamalıydı. İlk iki koşuldan herhangi biri doğru çalışmıyor. Şimdilik düzeltin bakalım :)

Güncelleme: Her ihtimale karşı OnDeinit'i geri getirin.

 void   OnDeInit()
{
   GlobalVariableSet ( "AllowNewOrders" , 1 ); 
} 
 
A13ksandr :

Kahretsin, başlangıçta kodun yalnızca bir kısmını doğru şekilde eklemek istedim, ancak daha sonra hepsini kopyaladım ve bu hatayı düzeltmedim. son hali böyle olmalı

Ancak genel olarak, o zaman tek bir anlaşma yapmamalıydı. İlk iki koşuldan herhangi biri doğru çalışmıyor. Şimdilik düzeltin bakalım :)

Güncelleme: Her ihtimale karşı OnDeinit'i geri getirin.


Denedim, kırmızıda bir ticaretten sonra her tikte pozisyon açmaya başladım.
 
alvlaf :
Denedim, kırmızıda bir ticaretten sonra her tikte pozisyon açmaya başladım.

İlk satırdaki ilk iki koşulu girin

if ( GlobalVariableGet ("AllowNewOrders") == 1) dönüş;

Ve ilk testi bir çift üzerinde deneyin.

Broker Büyük Sermaye?

 
A13ksandr :

İlk satırdaki ilk iki koşulu girin

if (GlobalVariableGet("AllowNewOrders") == 1) dönüş;

Ve ilk testi bir çift üzerinde deneyin.

Broker Büyük Sermaye?

//------------------------------------------------ ----------------------
int OnInit()
{
if (!GlobalVariableCheck("AllowNewOrders")) GlobalVariableSet("AllowNewOrders",1);
dönüş(INIT_SUCCESSED);
}

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

geçersiz OnDeInit()
{
GlobalVariableSet("YeniSiparişlere İzin Ver",1);
}
//------------------------------------------------ ----------------------

geçersiz OnTick()
{
if (GlobalVariableGet("AllowNewOrders") == 1) dönüş;
{
if (CountTrades() == 0) // Emir sayısı sıfıra eşit olmalıdır
{
if ((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) < PriceOpenLastHistOrder(OP_BUY))
|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) > PriceOpenLastHistOrder(OP_SELL)))
// Son anlaşma kârsızsa, aynısı açılır, ancak artan lotla
{
GlobalVariableSet("YeniSiparişlere İzin Ver", 0);
Tür = TypeLastHistOrder();
if (Tip == OP_BUY) Fiyat = Sor;
if (Tür == OP_SELL) Fiyat = Teklif;
Parti = NormalizeDouble(LotsLastHistOrder()*Çarpan, 2);
bilet = OrderSend(Symbol(), Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);
dönüş;
}
if (GlobalVariableGet("AllowNewOrders") == 1) dönüş;
{
if (PriceCloseLastHistOrder() == PriceOpenLastHistOrder() && CountHistTrades() > 0)
// Son ticaretin karı sıfırsa, aynısını aç
{
GlobalVariableSet("YeniSiparişlere İzin Ver", 0);
Tür = TypeLastHistOrder();
if (Tip == OP_BUY) Fiyat = Sor;
if (Tür == OP_SELL) Fiyat = Teklif;
Parti = NormalizeDouble(LotsLastHistOrder(), 2);
bilet = OrderSend(Symbol(), Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);
dönüş;
}
if (((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) > FiyatOpenLastHistOrder(OP_BUY))
|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) < PriceOpenLastHistOrder(OP_SELL)))
|| CountHistTrades() == 0)// Son işlem karlıysa, sipariş açılır
{
if (GlobalVariableGet("AllowNewOrders") == 0) dönüş;
if (SignalBuy() && MaxOpenOrders > OrdersTotal())
{
bilet = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, IntegerToString(Exp), Magic);
if (ticket>0) GlobalVariableSet("AllowNewOrders", 0);
dönüş;
}
if (SignalSell() && MaxOpenOrders > OrdersTotal())
{
bilet = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, 0, 0, IntegerToString(Exp), Magic);
if (ticket>0) GlobalVariableSet("AllowNewOrders", 0);
dönüş;
}
}
}
GlobalVariableSet("YeniSiparişlere İzin Ver", 1);
}
}

}

Evet, Büyük Başkent. Doğru takıldı mı? Bir şey tekrar anlaşmaları durdurdu.

 

Beyler, kafamı çoktan kırdım. Danışman, örneğin 1/4'lük bir alımla 8 mum için yüksek ve alçak için gecikmeler nasıl ayarlanır.

Bunun gibi bir şey yapıyorum:

double Vhod1=iEn Yüksek( Symbol() ,0,MODE_HIGH,8,0);

double Vhod2=iLowest(Symbol(),0,MODE_LOW,8,0);

çift TP=((Vhod1-Vhod2)/4)+Vhod1;


Parametreleri değiştirmeye çalıştım ama durakların doğru olmadığını söylüyor, sonra 7.00000 fiyatına ayarlanacak, nereye gittiği belli değil.