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

 
Rustbunch :

Bir danışman veya senaryo bulmama yardım et, muhtemelen hazır bir tane var...

Danışmanın belirli bir zamanda piyasada belirli bir geyik ve kârla bir anlaşma açması gerekir. Ondan daha fazlasına gerek yok...

Şimdiden teşekkür ederim.

Herhangi bir danışman bunu MetaEditor'da ve içindeki ilgili komut dosyalarında yapar!

 if (Hour() >= xx) открыть;
 
Ve sonra siparişlerin bir dizi muhasebesi var.Her şey kovuldu.
 
if (!PozyProstavleny){ ArrayResize(Buy,Raz);ArrayResize(Sell,Raz);
   
           Price= (Ask+Dist*Point) ; TP_BUY=(Price+TP*Point);  SL_BUY= (Price- SL*Point);
           Price_SELL= (Bid-Dist*Point) ;  TP_SELL=Price_SELL-TP*Point;  SL_SELL=Price_SELL+SL*Point; K=1;
           
   for(int Raz1=0;Raz1<Raz;Raz1++){
   
           Sleep(2000); RefreshRates();  for(int A=25;A>=0;A--){if(IsTradeAllowed())break;if(A==0) Comment(" эксперту не разрешено 
торговать или поток для выполнения торговых операций занят "); }           
  tyccBuy= OrderSend (Symbol( ), OP_BUYSTOP,  Lot ,NormalizeDouble(Price, Digits), 5, NormalizeDouble( SL_BUY,Digits),  
 NormalizeDouble( TP_BUY,Digits), NULL, 450, 0, CLR_NONE);
   Buy[Raz1]= tyccBuy;
           Price= (Price+Dist*Point) ; TP_BUY= (Price+TP*Point); SL_BUY= (Price- SL*Point);
           Error=GetLastError();
     if (Error!=0){ string errorcomment = "Ошибка открытия ордера байстоп  "  + " " + Symbol() +  " " + ErrorDescript(Error); 
           Print (errorcomment);}
           
           Sleep(2000); RefreshRates();  for( A=25;A>=0;A--){if(IsTradeAllowed())break;if(A==0) Comment(" эксперту не разрешено торговать
 или поток для выполнения торговых операций занят "); }        
           Sell[Raz1]=OrderSend (Symbol( ), OP_SELLSTOP,  Lot ,NormalizeDouble(Price_SELL, Digits), 5, NormalizeDouble( SL_SELL,Digits), 
  NormalizeDouble( TP_SELL,Digits), NULL, 450, 0, CLR_NONE);
     Price_SELL= (Price_SELL -Dist*Point) ;TP_SELL=Price_SELL-TP*Point;   SL_SELL=Price_SELL+SL*Point;
            Error=GetLastError();if (Error==0)
            
            {errorcomment = "Ошибка открытия ордера селлстоп  "  + " " + Symbol() +  " " + ErrorDescript(Error); 
        Print (errorcomment);} PozyProstavleny=1; 
                       }
                       }   
                        
 

Hepinize iyi günler!

ben acemiyim İlk defa bu fikri test cihazında koda çevirmeye çalışıyorum.

Fikir basit - her saatlik mumun açılış fiyatında dönüşümlü olarak yukarı ve aşağı bir sipariş açın.

Basit bir kod yazdım .... ama sorun şu ki bir mum açılışında program bazen nedense 1'den fazla sipariş açıyor.

Bana öyle geliyor ki, 1 saniye içinde 1'den fazla tik geldiğinde bu oluyor.

Bir seçenek olarak if ( ) koşul başlığını koymaya çalıştım..

SiparişlerToplam ( )==0

sadece bir sipariş aslında açılır.



Ama bu seçenek bana uymuyor çünkü ertesi gün bu mum açılmıyor çünkü bu mumun açılış anında

ticarette zaten farklı rastgele sayıda emir var.

OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP); satırından sonra da denedim. start() yürütmesini geri dönüşle kesintiye uğratın; .... Yardım etmedi.


1 saniye içinde herhangi bir tikte sadece 1 sipariş açılabilmesi için nasıl yapıldığını söylerseniz herkese minnettar olurum.

int başlangıç()

{
çift Fiyat=Sor;
çift SL=Fiyat-300*Puan;
çift TP=Fiyat+300*Puan;
if( Hour()==10 && Minute()== 00 && Seconds()==00)
OrderSend(Symbol(),OP_BUY,0.1,Fiyat,3,SL,TP);
}

 
Vb.
 
Dimka-novitsek :
Nasıl olduğunu bilmiyorum ama verilerin kaydedilmesi gerekiyor.

 //записать

void SaveArray( string File, double &a[])
{
     int h = FileOpen (File, FILE_BIN | FILE_WRITE );
     if (h> 0 )
    {
       int sz = ArraySize (a); 
       FileWriteArray (h,a, 0 ,sz);
       FileClose (h);
    }
}

//прочитать

void OpenArray( string File, double &a[], int sz)
{
     int h = FileOpen (File, FILE_BIN | FILE_READ );
     if (h> 0 )
    {
       ArrayResize (a,sz);
      FileReadArray (h,a, 0 ,sz);
       FileClose (h);
    }
}
 
solnce600 :

Hepinize iyi günler!

ben acemiyim İlk defa bu fikri test cihazında koda çevirmeye çalışıyorum.

Fikir basit - her saatlik mumun açılış fiyatında, dönüşümlü olarak yukarı ve aşağı bir sipariş açın.

Basit bir kod yazdım .... ama sorun şu ki bir mum açılışında program bazen nedense 1'den fazla sipariş açıyor.

Bana öyle geliyor ki, 1 saniye içinde 1'den fazla tik geldiğinde bu oluyor.

Bir seçenek olarak if ( ) koşul başlığını koymaya çalıştım..

SiparişlerToplam ( )==0

sadece bir sipariş aslında açılır.



Ama bu seçenek bana uymuyor çünkü ertesi gün bu mum açılmıyor çünkü bu mumu açma anında

ticarette zaten farklı rastgele sayıda emir var.

OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP); satırından sonra da denedim. start() yürütmesini geri dönüşle kesintiye uğratın; .... Yardım etmedi.

1 saniye içerisinde herhangi bir tikte sadece 1 siparişin açılmasını nasıl yapacağımı söylerseniz herkese minnettar olurum.

int başlangıç()

{
çift Fiyat=Sor;
çift SL=Fiyat-300*Puan;
çift TP=Fiyat+300*Puan;
if( Hour()==10 && Minute()== 00 && Seconds()==00)
OrderSend(Symbol(),OP_BUY,0.1,Fiyat,3,SL,TP);
}

Bu TechZad ise, iştesiniz!
 
Teşekkürler!!!!!!
 

solnce600 :

1 saniye içerisinde herhangi bir tikte sadece 1 siparişin açılmasını nasıl yapacağımı söylerseniz herkese minnettar olurum.

 int start()
{
...

int ot= OrdersTotal ();

bool open_allowed = true ;

if (ot> 0 )
{
   if ( OrderSelect (ot- 1 ,SELECT_BY_POS))
   {
       if ( TimeCurrent ()-OrderOpenTime()<= 1 ) open_allowed= false ;   //если разница между текущим временем сервера и временем открытия последнего ордера 1 секунда или меньше, запретить торговлю
   }
}

if (open_allowed)
{
   //открываемся
}
...
}
 
Hemen şimdi.. Yaklaşık .Başlamadan önce bazı değişkenler bildirin, zamanı hatırlayın. Siparişi verdikten sonra, diyelim ki gerçeğe eşittir. Ayarlamadan önce, ayrıca kontrol edin. Geçici değişkenler konusunda pek iyi değilim. Emirden önce bu değişkene belirtilen sürenin eklenip eklenmediğini, şimdiki zamandan fazla olup olmayacağını kontrol edin . Daha fazla değilse, sipariş gönderin ve yeni zamanı tekrar hatırlayın! Evet, bunun gibi bir şey. Ne kadar basit olursa olsun!!!
Neden: