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

 
Hepinize çok teşekkür ederim, her şey olması gerektiği gibi çalıştı! Yazık ki ifade yok, bir demet talimat vermek istiyorum :)
 
oleg_felix : İşlemlerin yapılacağı zaman aralığını nasıl ayarlayacağımı söyler misiniz? (günün başlangıç saati ve bitiş saati)

buraya bakın: https://www.mql5.com/en/forum/135030

 
Yardımcı oldu, teşekkürler, anladım!
 

Lütfen bana aşağıdaki komutu nasıl yazacağımı söyleyin:

- belirli sayıda kâr puanı için siparişin zararsız hale getirilmesi

 
oleg_felix :

Lütfen bana şu komutu nasıl yazacağımı söyle:

- Açık bir siparişte, işlemde belirli bir kâr miktarında başabaş (spread'i dikkate alarak) zararı durdurun.

İşte aynı sihirli numaraya sahip tüm siparişleri kullanılana aktarmak için bir fonksiyon, onunla denemeyi deneyin


extern int     LevelWLoss        = 100;       // Уровень безубытка в пп
extern int     LevelProfit       = 300;       // Уровень профита в пп
//+----------------------------------------------------------------------------+
//|  Перенос стопа в безубыток                                                 |
//+----------------------------------------------------------------------------+
void MovingInWL( int Magic) {
   int i, k;
   string sym;
   double ord_open,ord_TP,ord_SL;
  
  k = OrdersTotal ()- 1 ;
  sym = Symbol ();
   for (i=k; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ( OrderSymbol ()==sym && OrderMagicNumber ()==Magic) {
        ord_open = OrderOpenPrice ();
        ord_TP   = OrderTakeProfit ();
        ord_SL   = OrderStopLoss ();
         if ( OrderType ()==OP_BUY) {
           if ( NormalizeDouble (ord_SL, Digits )== NormalizeDouble ( 0 , Digits ) || 
               NormalizeDouble (ord_SL-ord_open, Digits )< NormalizeDouble (LevelWLoss* Point , Digits )) {
             if ( NormalizeDouble (Bid-ord_open, Digits )> NormalizeDouble (LevelProfit* Point , Digits )) {
               OrderModify ( OrderTicket (), ord_open, NormalizeDouble (ord_open+LevelWLoss* Point , Digits ), ord_TP, 0 , Yellow );
            }
          }
        }
         if ( OrderType ()==OP_SELL) {
           if ( NormalizeDouble (ord_SL, Digits )== NormalizeDouble ( 0 , Digits ) || 
               NormalizeDouble (ord_open-ord_SL, Digits )< NormalizeDouble (LevelWLoss* Point , Digits )) {
             if ( NormalizeDouble (ord_open-Ask, Digits )> NormalizeDouble (LevelProfit* Point , Digits )) {
               OrderModify ( OrderTicket (), ord_open, NormalizeDouble (ord_open-LevelWLoss* Point , Digits ), ord_TP, 0 , Yellow );
            }
          }
        }
      }
    }
  }
return ;
}
//_______________________________________________________________________
 

IgorM


İşte danışman kodum: Başabaş için transfer fonksiyonunu nereye eklemeliyim?

harici int tp = 0;

harici int sl = 0;

harici intBeginHour = 0; // zaman Başlat

harici int Bitiş Saati = 0; // zaman mezuniyet

int başlangıç()

{

//----

if ( OrdersTotal ()==0 && Hour () >= BeginHour && Hour () < EndHour && Close [1]< Open [1] && High [1]< Bid ) // Açık emir olup olmadığını ve son çubuğun kapanış fiyatının açılış fiyatından düşük olup olmadığını kontrol edin. Fiyat ulaştığında satın almak için açılıyor teklif etmek geçerli çubuk, önceki çubuğun yüksek seviyesi.

OrderSend(Symbol(),OP_BUY,1,Ask,0,Ask-sl*Point,Ask+tp*Point,"",777,0,Red);

if ( OrdersTotal ()==0 && Hour () >= BeginHour && Hour () < EndHour && Close [1]> Open [1] && Low [1]> Bid ) // Açık emir olup olmadığını ve son çubuğun kapanış fiyatının açılış fiyatından düşük olup olmadığını kontrol edin. Fiyat ulaştığında satın almak için açılıyor teklif etmek geçerli çubuk, önceki çubuğun yüksek seviyesi.

OrderSend(Symbol(),OP_SELL,1,Bid,0,Ask+sl*Point,Ask-tp*Point,"",777,0,Red);

//----

dönüş(0);

}

 
oleg_felix :

İşte danışman kodum: Başabaş için transfer fonksiyonunu nereye eklemeliyim?

Sanırım bu aşamada kodunuzun sonuna benim fonksiyonumu eklemeniz yeterli olacaktır ve kodunuzda en azından şunu yapın:

if( OrdersTotal() >0) MovingInWL(777);

kodun başına ekle

harici int SeviyeWKayıp = 100; // pp cinsinden başabaş düzeyi
extern int LevelProfit = 300; // pp olarak kar seviyesi

Ama benim bile sorunu kendi başınıza çözeceğinize dair şüphelerim var :)

 
DmitriyN :
Yapabilir. Ayrıca, evdeyken, işyerinde kurulu bir bilgisayardan hesabınızı yönetebilir veya tam tersini yapabilirsiniz.
Teşekkür ederim.
 

Başka birinin işlevini yeniden yapmaya çalıştım ve "biraz" akıllıca, işte bir kod parçası:

string FileName = test.txt;

int FileHandle=FileOpen(FileName,FILE_READ);
  if (FileHandle < 0)
     {
       Print("Файл не найден.");
     }
  
  string strInfo;
  int i;
  if (FileHandle>0)
     {
     while (i<20)
        {
          if (FileHandle == 1)
            {
            string strInfo1=FileReadString(FileHandle);
            }else{
                 if (FileHandle == 2)
                    {
                    string strInfo2=FileReadString(FileHandle);
                    }else{
                         if (FileHandle == 3)
                              {
                            string strInfo3=FileReadString(FileHandle);
                              }else{
                                   if (FileHandle == 4)
                                       {
                                       string strInfo4=FileReadString(FileHandle);
                                       }else{
                                            if (FileHandle == 5)
                                               {
                                               string strInfo5=FileReadString(FileHandle);
                                               }else{
                                                    if (FileHandle == 6)
                                                       {
                                                       string strInfo6=FileReadString(FileHandle);
                                                       }else{
                                                            if (FileHandle == 7)                                                            
                                                               {
                                                               string strInfo7=FileReadString(FileHandle);
                                                               }else{
                                                                    if (FileHandle == 8)                                                                    
                                                                        {
                                                                        string strInfo8=FileReadString(FileHandle);
                                                                        }else{
                                                                             if (FileHandle == 9)
                                                                                 {
                                                                                 string strInfo9=FileReadString(FileHandle);
                                                                                 }else{
                                                                                      if (FileHandle == 10)
                                                                                         {
                                                                                         string strInfo10=FileReadString(FileHandle);
                                                                                         }else{
                                                                                              Print("Ошибка! В файле должно быть не более 10 записей!");
                                                                                              }
                                                                                      }
                                                                             }
                                                                    }
                                                            }
                                                    }
                                            }
                              
                                   }
                          }
                   
                               
             
          }
          if (StrToInteger(strInfo1)==12345||StrToInteger(strInfo2)==12345||
              StrToInteger(strInfo3)==12345||StrToInteger(strInfo4)==12345||
              StrToInteger(strInfo5)==12345||StrToInteger(strInfo6)==12345||
              StrToInteger(strInfo7)==12345||StrToInteger(strInfo8)==12345||
              StrToInteger(strInfo9)==12345||StrToInteger(strInfo10)==12345)
          {
          isNumInFile = TRUE;
          }

        if (FileIsEnding(FileHandle) && isNumInFile == FALSE)
           {
           Print("Достигнут конец файла, искомое значение не найдено");
           break;
           }
        i++;

        if (i>100) break;
        }
     FileClose(FileHandle);
     }

Test.txt dosyasının ilk 10 satırında belirli bir değer bulmasını istedim ve satır sayısı 10'dan fazla ise "Hata! Dosyada 10'dan fazla giriş olmamalıdır" hatası veriyordu. !", Ama nedense hala tüm girişler için geçerli, lütfen düzeltmeme yardım edin ve mümkünse kodu basitleştirin ve ayrı bir işlev olarak düzenleyin.

 

İnsanlar, birini erişilebilir bir biçimde, parametrelerin ne olduğunu referans olarak açıklayın. Belgeleri okudum, ancak yalnızca oradan bunun mümkün olduğunu anladım ve değişkeni tanımladıktan sonra & değiştiricisini koymak gerekiyor. Açıklamaya açıklamalarla birlikte küçük bir program eşlik etseydi harika olurdu... Parametreleri referans ile geçirmek ile parametreleri geçmek arasındaki genel fark nedir?