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

 
artmedia70 :

Sen

geçersiz OpenBuy() {

çift dStopLoss = 0, dTakeProfit = 0;
double Lots_New = Lot;

if (isLossLastPos(NULL, -1, MAGIC))
Çok_Yeni *= 2;
else if (!isLossLastPos(NULL, -1, MAGIC))

Lots_New = Çok;

Bu bir fonksiyondur ve bu fonksiyonun en başında Lots_New değişkenine = Lot değerini atarsınız;

Her zaman orijinal durumuna geri getirirseniz daha sonra nasıl değişeceğini düşünün?

Sana nereye yazmanı söyledim? Başlangıç fonksiyonundan önce harici değişkenlerde...

Ve parti değerini doğru boyuta normalleştirin:

Lots_New = NormalizeLot(Lot*2, False, "");




Çok teşekkürler!

Söyleyin lütfen, sonraki her bir kaybeden sipariş için lot değerini ayarlamak mümkün müdür? Böyle bir şey olmak

1 grup 0.01

2 grup 0.01

3 lot 0.02

4 parti o.03

5 parti 0.07

.....

15 grup 1.2

böylece koddaki partinin değerini değiştirebilirsiniz.

Ve böylece işlemin karlı olduğu ortaya çıkarsa, her şey en başa dönecekti.

Şimdiden teşekkürler.

Boris.

 
Necron :
Roger, teşekkürler, ama yine de doğru çalışmıyor. Başka bir izi sabitlemeye çalıştım, ancak hata hala devam ediyor :( Aynı anda bir poz ve birkaç poz için iz herhangi bir şeyde farklılık gösteriyor mu?

Evet, prensipte hiçbir fark yoktur.
Fonksiyonumu dene, oldukça basit, parametre olarak geç, büyü ve istenen trol.
İşlev çağrısını, her tikte oradan "geçtiği" sürece, herhangi bir yerde başlangıçta atın .

 //+------------------------------------------------------------------+
void trailing( int magic, int trailing){
   int index = 0 ;
   while (trailing > 0 && OrdersTotal () != 0 && OrderSelect (index, SELECT_BY_POS)){
      if (OrderMagicNumber() == magic){
         if (OrderType() == OP_BUY){
            if (Bid - OrderStopLoss() > Point *trailing){
               if (trailing >= MarketInfo( Symbol (), MODE_STOPLEVEL) && trailing > MarketInfo( Symbol (), MODE_FREEZELEVEL))
                  if (!OrderModify(OrderTicket(), OrderOpenPrice(), Bid - ( Point *trailing), OrderTakeProfit(), 0 )) Print ( ">>> ERROR " , GetLastError ());
            }
            return ;
         }
         if (OrderType() == OP_SELL){
            if (OrderStopLoss() - Ask > Point *trailing || OrderStopLoss() == 0 ){
               if (trailing >= MarketInfo( Symbol (), MODE_STOPLEVEL) && trailing > MarketInfo( Symbol (), MODE_FREEZELEVEL))
                  if (!OrderModify(OrderTicket(), OrderOpenPrice(), Ask + ( Point *trailing), OrderTakeProfit(), 0 )) Print ( ">>> ERROR " , GetLastError ());
            }
            return ;
         }
      }
      index++;
   }
}
//+------------------------------------------------------------------+

Emirlerin sihirlerinin farklı olması gerektiği açıktır.

 
Lütfen bana neden işe yaramadığını söyle:

OrderSelect(1,SELECT_BY_POS,MODE_TRADES);

hata kodu 4051. Bir açık sipariş OP_BUY var.
Dosyalar:
ma_1.mq4  3 kb
 
itum :

Sorunu çözmeye yardım edin!


Açtığım veya beklettiğim siparişler için arama yapıyorum. Eğer öyleyse, o zaman bunun ne tür bir alış veya satış emri olduğunu belirlerim. Belirli koşullar altında (eğer biri diğerinden büyükse ve ayrıca üçüncüden küçükse), o zaman bu siparişi kapatmak istiyorum. İçindeki ayarları değiştirin ve tekrar açın.

Sorun, bir siparişi kapatmak ve açmak için sinyalin sürekli olarak mevcut olmasıdır. Bu nedenle siparişim kapanıyor ve tekrar açılıyor ve bu şekilde açılıp kapanıyor...)))

Bu sorun nasıl çözülür? Ha
Bence deja vu... Bende bir tane var mı??? Birkaç kişi zaten size cevap verdi ... Ha?
Pozun kendisini açma ve açma koşulunu içeren kodunuzu buraya koyun. Parmak dürtme patlaması... :)
 
an11 :
Lütfen bana neden işe yaramadığını söyle:

OrderSelect(1,SELECT_BY_POS,MODE_TRADES);

hata kodu 4051. Bir açık sipariş OP_BUY var.

OrderSelect() işlevindeki sayı sayısı sıfırdan başlar . Ve 1 tane var, yani piyasada sadece bir tane olmasına rağmen ikinci bir sipariş arıyorsunuz ve bu yüzden çalışmıyor.

 
Vinin :
Bunu parametrelerle, ancak kalıplarla yapabilirsiniz. Önce kriterleri belirlememiz gerekiyor. Öyle görünmüyor. Ve eğer öyleyse, nasıl. En azından ne kadar (yüzde). Bir durumda, zaman bileşeni, diğerinde fiyat. Bunları birbirleriyle nasıl ilişkilendirebiliriz. Yine de bir nöron ekleyebilirsiniz. Kohonen katmanı bunu iyi yapıyor.

retorik bir soru değildi, ama gerçekten doğru "gibi görünmüyor" yüzde kaç, .. göstergelerimden birinde, "gibi görünmüyor ve yüzde kaç")) ) zaten bir kalıbın 12 adet varyantı geçilmiş, kalıp aynı, ancak değerler ve oranları her zaman farklıdır))),... Henüz sinir ağları ile çalışmadım, sanırım burada bir deneyim Temel algoritmaları mql'de yazmak yeterli olmayacak, ancak uygulama yoluyla muhtemelen hepsini düzeltecekti. Bu görevle Kohonen'i değiştirerek "barbarca" uğraşırdım, modelin oluştuğu anda tüm parametreleri excel'e yazardım ve anlaşma açılırsa sonucu excel analiz yöntemini kullanarak ilişkide daha fazla eşleşme aramak zorunda kaldım. karlılığa. Sonuç olarak, biraz ortaya çıktı ve sistem kalıbı belirledi, biraz akıllıca ama yine de sakar)
 
cyclik33 : ...

Boris'i hangi işlevi kullandığını bilmiyorum, ama genel olarak fikir şu, adımın eşit olmadığı için bir dizi kullanmanı, ihtiyacın olan hacimleri ona yazmanı ve ardından fonksiyondaki değerini sıralamanı öneririm. .

Kodumda örnek:

 //+------------------------------------------------------------------+
double getMartinLot( double lot, double arrayLot[]){ //ФУНКЦИЯ УПРАВЛЕНИЯ ОБъЕМОМ ТОРГОВ ПО СИСТЕМЕ МАРТИНГЕЙЛА
   static double balance_before, balance_after;    //ДЛЯ ХРАНЕНИЯ СОСТОЯНИЯ БАЛАНСА ДО И ПОСЛЕ СДЕЛОК
   static double save_Lot;   
   static int loop;
   if (loop == ArraySize (arrayLot))loop = 0 ;   
   balance_after = AccountBalance();               //СОХРАНЕНИЕ ТЕКУЩЕГО СОСТОЯНИЯ БАЛАНСА   
   if (balance_after >= balance_before){            //ПРОВЕРКА ИЗМЕНЕНИЯ БАЛАНСА
      save_Lot = lot;                              //ЕСЛИ ОН НЕ ИЗМЕНИЛСЯ ИЛИ СТАЛ БОЛЬШЕ, ТО СБРАСЫВАЕМ ЛОТ
      loop = 0;
   } else {
      save_Lot = arrayLot[loop];                   //ЕСЛИ СТАЛ МЕНЬШЕ ТО УВЕЛИЧИВАЕМ ЛОТ
      loop++;
   }
   balance_before = balance_after;                 //СОХРАНЯЕМ СОСТОЯНИЕ БАЛАНСА ПОСЛЕ РАБОТЫ
   return (save_Lot);
}
//+------------------------------------------------------------------+
İşlev çağrısı örneği:
 //+------------------------------------------------------------------+
int start()
  {
   double volume[] = { 0.1 , 0.1 , 0.2 , 0.3 , 0.7 };   //создаем массив с объемами

   if ( OrdersTotal () == 0 ){
      OrderSend ( Symbol (), OP_BUY, getMartinLot( 0.1 , volume), Ask, 10 , Bid - 25 * Point , Bid + 25 * Point , "" , 777 );
   }
}
//+------------------------------------------------------------------+
 
artmedia70 :
Bence deja vu ... Bende bir tane var ??? Birkaç kişi zaten size cevap verdi ... Ha?
Pozun kendisini açma ve açma koşulunu içeren kodunuzu buraya koyun. Parmak dürtme patlaması... :)
Ben de :))) Valentin, nedense kodu göstermek istemiyor, muhtemelen fikirlerini ifşa etmek istemiyor...
 
ToLik_SRGV :

Boris'i hangi işlevi kullandığını bilmiyorum, ama genel olarak fikir şu, adımın eşit olmadığı için bir dizi kullanmanı, ihtiyacın olan hacimleri ona yazmanı ve ardından fonksiyondaki değerini sıralamanı öneririm. .

Kodumda örnek:

İşlev çağrısı örneği:

Çok teşekkürler!!!!!

Ben de sizin kodunuzu kullanıyorum (ve bu arada harika çalışıyor), ancak Artemis kodunu başka bir danışmana yüklemek istedim, çünkü öncelikle onunla çok daha fazla sorunum vardı ve zaten neden çalışmadığına dair bir prensip sorunu vardı. olması gerekiyor.

Bir kez daha, çok teşekkür ederim!!!! Yapmaya çalışacağım!

 

soru banal olabilir, danışman M1'de işlem görüyor, bir emir açmak için bir sinyal alındı, stopun kısa olduğunu ve emrin bir sonrakinde kapatıldığını varsayalım. ama açılma durumu hala orada.

Siparişin aynı dakikada tekrar açılmaması için en iyi yol nedir? Bir sonrakine ne dersin? şimdiden teşekkürler!

Neden: