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

 

Sorun. Bana kimin yapabileceğini söyle.

Sipariş Seçiminde (0,SELECT_BY_POS, MODE_HISTORY )

OrderProfit() içinde, geçmiş listesindeki ilk karı döndürür,

tarih listesindeki son karı tam olarak döndürmesini nasıl sağlayabilirim?

şöyle denedim:

A=SiparişlerTarihiToplam();

OrderSelect(A,SELECT_BY_POS,MODE_HISTORY);

OrderProfit() hiçbir şey döndürmez)

)) ama pulluk yapmaz

 

Profesyoneller, bana senaryoyu nasıl düzelteceğimi söyleyin. Verileri dışa aktarmak için bir komut dosyası kullanıyorum.

 int start()
  {
  out_hist( "EURUSD" , 1440 );
  out_hist( "GBPUSD" , 1440 );
  out_hist( "USDJPY" , 1440 );
  out_hist( "USDCAD" , 1440 );
  out_hist( "AUDUSD" , 1440 );
//

  
   return ( 0 );
  }
//  
int out_hist( string ccy, int tf)
{
   string fname = ccy + tf + ".txt" ;
   int handle = FileOpen (fname, FILE_CSV | FILE_WRITE , "," );
   if (handle> 0 )
    {
     FileWrite (handle, "<TICKER>,<DTYYYYMMDD>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>" );     // header
     for ( int i=iBars(ccy,tf)- 1 ; i>= 0 ; i--)
       {
       string P =ccy + tf;
       string date1 = TimeToStr(iTime(ccy,tf,i),TIME_DATE);
       date1 = StringSubstr (date1, 0 , 4 ) + StringSubstr (date1, 5 , 2 ) + StringSubstr (date1, 8 , 2 );
       string time1 = TimeToStr(iTime(ccy,tf,i),TIME_MINUTES);
       FileWrite (handle, P, date1, time1, iOpen(ccy,tf,i), iHigh(ccy,tf,i), iLow(ccy,tf,i), iClose(ccy,tf,i), iVolume(ccy,tf,i));
       }
     FileClose (handle);
     }
//----
   return ( 0 );

Sonuç olarak, 5 veri dosyası alıyorum. İlk enstrüman için, ardından ikincisi için veri içeren 1 dosya almak istiyorum. Nedense her şeyi tek bir dosyada birleştirmek imkansız... Teşekkürler.

 
kon12 :

Profesyoneller, bana senaryoyu nasıl düzelteceğimi söyleyin. Verileri dışa aktarmak için bir komut dosyası kullanıyorum.

Sonuç olarak, 5 veri dosyası alıyorum. İlk enstrüman için, ardından ikincisi için veri içeren 1 dosya almak istiyorum. Her şeyi tek bir dosyada birleştirmek için bir şey çalışmıyor ... Teşekkürler.


Okuma ve yazma için açık dosyayı kullanın, dosyanın sonuna gidin ve ekleyin

FileOpen(fname, FILE_WRITE|FILE_READ );

Dosya Arama()

sana yardım etmek

 
gheka :

Sorun. Bana kimin yapabileceğini söyle.

OrderSelect'te(0,SELECT_BY_POS,MODE_HISTORY)

OrderProfit() içinde, geçmiş listesindeki ilk karı döndürür,

tarih listesindeki son karı tam olarak döndürmesini nasıl sağlayabilirim?

şöyle denedim:

A=SiparişlerTarihiToplam();

OrderSelect(A,SELECT_BY_POS,MODE_HISTORY);

OrderProfit() hiçbir şey döndürmez)

)) ama pulluk yapmaz


Yani son arama emrinin hala bulunması gerekiyor. Ve sonuncusu nedir. Açılış saati veya kapanış saati. Ve elbette, hangi aracı arayacağınızı da unutmayın.
 
işlemin maksimum hacmini ciddi şekilde sınırlamak için danışmana ne yazacağımı söyle, sadece hangi hacmin açılacağına karar verir, ancak büyük bir hacim açar ve sonra bir boşaltma meydana gelir, onu sınırlamak gerekir, böylece 0,5'i geçmez
 
ilmur :
işlemin maksimum hacmini ciddi şekilde sınırlamak için danışmana ne yazacağımı söyle, sadece hangi hacmin açılacağına karar verir, ancak büyük bir hacim açar ve sonra bir boşaltma meydana gelir, onu sınırlamak gerekir, böylece 0,5'i geçmez
 extern double MyMaxVolume= 0.5 ;

...

if (рассчитанный_объем > MyMaxVolume) рассчитанный_объем=MyMaxVolume;
 
Necron :

Bir insan bilseydi, kendisi yapardı. Ve burada başka birinin kodunda değişiklik yapmanız gerekiyor gibi görünüyor
 

Teşekkür ederim

 
extern double SL=20; // SL для открываемого ордера
extern double TP=20; // ТР для открываемого ордера
extern double Lot=0.01; // Жестко заданное колич. лотов
datetime time;
//--------------------------------------------------------------- 2 --
int start()
{
int Total;

double
M_0,
M_1;


bool
Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false; // Критерий для открытия Sell

//--------------------------------------------------------------- 3 --
// Учёт ордеров


for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()>1)Total++;

if(Total!=0 || time==Time[1])return;


// Торговые критерии

M_0=iOsMA(NULL,0,13,34,8,0,0); // 0 бар
M_1=iOsMA(NULL,0,13,34,8,0,1); // 1 бар



if (M_1<0 && M_0>0)
Opn_B=true;

if (M_1>0 && M_0<0)
Opn_S=true;

//--------------------------------------------------------------- 7 --


if (Opn_B)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,0,Bid-SL*Point,Bid+TP*Point);time=Time[1];}

if (Opn_S)
{OrderSend(Symbol(),OP_SELL,Lot,Bid,0,Ask+SL*Point,Ask-TP*Point);time=Time[1];}
}


OsMA sıfır çizgisini geçtiğinde pozisyonları açan bir Uzman Danışman. Nerede açıldığı ve neden açıldığı belli değil. iOsMA'da bir hata olup olmadığına bakın(NULL,0,13,34,8,0,0)?
 
bool isCloseLastPosByStop( string sy= "" , int op=- 1 , int mn=- 1 ) {
   datetime t;
   double    ocp, osl;
   int       dg, i, j=- 1 , k=OrdersHistoryTotal();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
       if (OrderSymbol()==sy || sy== "" ) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (op< 0 || OrderType()==op) {
             if (mn< 0 || OrderMagicNumber()==mn) {
               if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
   if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
     if (dg== 0 ) if ( StringFind (OrderSymbol(), "JPY" )< 0 ) dg= 4 ; else dg= 2 ;
    ocp= NormalizeDouble (OrderClosePrice(), dg);
    osl= NormalizeDouble (OrderStopLoss(), dg);
     if (ocp==osl) return (True);
  }
   return (False);
}

bir şey çalışmıyor, belki burada bir şeyi değiştirmem ya da başlangıçtan sonra koymam gerekiyor.

Kağıt üzerindeki kodunuzu anladığım bir dilde Rusça'ya çevirmeye çalıştım ama ulaşmıyor,

çok karmaşık, özellikle sonraki her bir koşulda ve sekiz koşuldan biri olduğunda

Tabii ki böyle bir kodu yaratanın sadece bir mucize olduğunu iddia etmiyorum ama bu benim için tam bir sapıklık (iyi anlamda)

standart işlev dışında, her işleme ve koşula yorum eklemek için çok tembel olmayan.

Neden: