[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 357

 
Zhunko :
Kodu atabilir misin? Belki sözde kod. Başlangıçsız nasıl olur?... Bu, C++'daki main() gibi ana işlevdir.

Hangi görevleri çözeceğinize bağlıdır ve kodunuzun EA programının gövdesindeki konumuna göre belirlenir. Hiç kimse, kodu başlatma işlevinde tutmamızı zorunlu kılmaz!

start() işlevi, kod şablonumuzda önceden tanımlanmış üç işlevden biridir. En azından mevcut olmalı!, çünkü ana program bir terminal programıdır (burada ana (), anadır), ana görevlerini yerine getirir, sunucudan yeni bir teklif aldıktan sonra (kabaca), basitçe görünecektir. start işlevinize girin ve içindeki kodu çalıştırın, yalnızca return () varsa, başlatma işlevi burada sona erecektir.

 
"Profesyoneller, geçmeyin" :) lütfen ekonomik takvimin ve diğer faydalı şeylerin yayınlandığı en sevdiğiniz (tercihen Rusça konuşan) haber kaynağının bağlantısını paylaşın. Bu tür linklerin buraya yerleştirilmesine izin verilmiyorsa, PM'de bana gönderin.
 
aşağıdakileri yazmanıza yardımcı olun.

bir satın alma sinyali varsa
açık satış emirlerini kontrol etme
varsa kapat
değilse, bir satın alma açın

sat sinyali varsa
açık satın alma siparişlerini kontrol etme
varsa kapat
değilse, bir satın alma açın
 
frxmax :
aşağıdakileri yazmanıza yardımcı olun.

bir satın alma sinyali varsa
açık satış emirlerini kontrol etme
varsa kapat
değilse, bir satın alma açın

sat sinyali varsa
açık satın alma siparişlerini kontrol etme
varsa kapat
değilse, bir satın alma açın


yazmaya başlayın - yardımcı olacağız

işte size yardımcı olmak için https://book.mql4.com/en/

 
abolk :


yazmaya başlayın - yardımcı olacağız

size yardımcı olmak için burada https://book.mql4.com/ru/

çoktan başladım

toplam=SiparişToplam();
if(Satın alma emri açmak için ŞART)
if(toplam<1)
{
bilet=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid-StopLoss*Puan,Teklif+100*Puan,"Satın al",1111,0,Yeşil);
if(bilet<0)
{
Print("OrderSend # hatasıyla başarısız oldu",GetLastError());
dönüş(0);
}
}başka
{
if(Sipariş Seçimi(0,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==OP_SEL)
OrderClose(NULL,Lot,Sor,3);
dönüş(0);
}
}

 
Neredeyse doğru, önce kontrol edin ve sonra gösterin.
 
frxmax :
aşağıdakileri yazmanıza yardımcı olun.

bir satın alma sinyali varsa
açık satış emirlerini kontrol etme
varsa kapat
değilse, bir satın alma açın
//  в ф-ции старт 
  
if (....условие покупки....){
     if (CalculateOrders( Symbol (),OP_SELL)> 0 ) Ord_Close( Symbol (),OP_SELL);
     Ticket(OP_BUY);      }

//-----------------------
int CalculateOrders( string simbol, int type)
  {
   int count= 0 ;
//----
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==false) break ;
       if (OrderSymbol()==simbol)
        {
         if (OrderType()==type)  count++;
        
        }
     }
     
 return (count);
  }

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

void Ord_Close( string simb, int type) {   double price;
   
   if (type==OP_BUY)  price=MarketInfo(simb, MODE_BID); else
   if (type==OP_SELL) price=MarketInfo(simb, MODE_ASK);

   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==false)         break ;
       if ( OrderSymbol()!=simb || OrderMagicNumber()!=mn) continue ;
       //---- check order type 
       if (OrderType()==type)
        {  OrderClose(OrderTicket(),OrderLots(),price, 3 , White );   break ;  }
        
        
     }   
     
     
 } 
//-----------------------------

int Ticket( int op){
       double pp = MarketInfo( Symbol (), MODE_POINT);
       double pBid = MarketInfo( Symbol (), MODE_BID);
       double pAsk = MarketInfo( Symbol (), MODE_ASK); 
       double open_price;
       double T;
       color col= NULL ;
       int mn= 0 ;
      
   if (op== 0 ) {open_price=pAsk; col= Blue ; T=pAsk+Take*pp;}
   if (op== 1 ) {open_price=pBid; col= Red ;  T=pBid-Take*pp;}
   int res= OrderSend ( Symbol (),op, 0.1 ,open_price, 0 , 0 ,T, NULL ,mn, 0 ,col); 

   return (res);               }
 
KONDOR :

Yardımınız için çok teşekkür ederim, sadece biraz farklı yaptım ve yaklaşımınız benim için biraz anlaşılmaz.

Nasıl satışa çıkarabileceğimi açıklar mısınız? hepsi bu? Sadece burada pek bir şey anlamıyorum.

Bana çok yardımcı oldun.

 
frxmax :

Her şeyi satışa çevirmeye çalıştım - işe yaramadı. fırsatlar açmıyor

130 hatası - ayaklar doğru değil, peki orada bizimle neredeler?

şimdi her bar için bir sipariş açıyor ama sadece bir taneye ihtiyacı var.


toplam=SiparişToplam();

if(toplam<1)

vb.

 
KONDOR :


hmm, ve vahşi doğada daha derine indim - teklifleri sorularla değiştirin, vb. bunun için teşekkürler)

ayaklarla da uğraştı