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

 
CLAIN :

Yoldaşlar, lütfen yardım edin... Basit bir kod yazdım, ancak derlerken parantezlerin dengeli olmadığını söylüyor ve zaten 300 kez saydım - her şey yerinde

Fikir hiçbir yerde daha basit değildir - MACD 7 dakikadan fazla olmamak üzere 0'ın üzerinde (veya altında) ise, pozisyon açılır


Bu özelliğe göz atın

 void AnalyzeSignal( int signal) 
{ 
   if (signal == 100 ) 
  { 
    ticket = OrderSend ( Symbol (),OP_BUY,lots,Ask,slip,Bid-TS* Point ,Bid+TP* Point , "покупаем" ,Magic, 0 , Green ); 
     if (ticket> 0 ) 
    { 
       OrderSelect (ticket,SELECT_BY_TICKET); 
       Print ( "открылись на покупку по цене:" OrderOpenPrice ()); 
    } 
     else 
    { 
       Print ( "открыться не удалось по причине:" GetLastError ()); 
       return ( 0 ); 
    } 
  } 
   if (signal == - 100 ) 
  { 
    ticket = OrderSend ( Symbol (),OP_SELL,lots,Bid,slip,Ask+TS* Point ,Ask-TP* Point , "Продаем" ,Magic, 0 , Green ); 
     if (ticket> 0 ) 
    { 
       OrderSelect (ticket,SELECT_BY_TICKET); 
       Print ( "открылись на продажу по цене:" OrderOpenPrice ()); 
    } 
     else 
    { 
       Print ( "открыться не удалось по причине:" GetLastError ()); 
       return ( 0 ); 
    } 
  } 
} 

//---- 
return ( 0 ); 
} 
 
CLAIN :
ps seninki kadar güzel bir senaryo nasıl çizilir?

Cevabı yazarken SRC butonu var.

Parantezlere gelince, kapanışın ne olduğunu belirtme alışkanlığım var.

}//için

}//if (sinyal...

 
splxgf :

Parantezlere gelince, kapanışın ne olduğunu belirtme alışkanlığım var.

}//için

}//if (sinyal...


"tat ve renk..." - ama kuşkusuz, bu yaklaşım kodu gereksiz bilgilerle karıştırır + fazladan kod satırları yazmak için zamanı yönlendirir + derin yuvalama (sayı seviyeleri?)

kodu yapılandırmak daha iyidir - yukarıdaki gönderideki örnekte olduğu gibi

 

Tünaydın, lütfen bana bir koşulu nasıl yazacağımı söyle, böylece bir sipariş açtıktan sonra ikincisi aynı mum üzerinde açamaz. Aşağıdakileri yazıyorum:

if (... && CountOrder<2 && (BarLast>1 || BarLast==-1))
{
OrderSend(Symbol(),OP_BUY,MinLot,Ask,0,VStopLossUzun,0,"SATIN AL: ",MagicL,0,Yeşil);

}

nerede

// bir kağıt için açık siparişlerin sayısını sayın
int CountOrder=0;
for (int j=0; j<SiparişlerToplam(); j++)
if (OrderSelect(j,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol()==Symbol()) CountOrder++;

// son kapatılan pozisyonun çubuğunun numarası veya henüz açılmadıysa -1
int BarLast=BarLastClosePose();


ve

// son kapatılan pozisyonun bar numarası
int BarLastClosePose()
{
tarihsaat t;
int i;

(i=0; i<OrdersHistoryTotal(); i++) için
{
if (Sipariş Seçimi(i,SELECT_BY_POS,MODE_HISTORY))
{
//eğer (OrderMagicNumber()!=Magic) devam ediyorsa;
(OrderSymbol()!=Symbol()) devam ederse;
(OrderType()>1) devam ederse;
if (t<SiparişKapatTime()) t=SiparişKapatZamanı();
}
}

dönüş (iBarShift(Symbol(),Period(),t,true));
}

 
teşekkürler Roger
 
datetime LastTradeBar;

bool CanTrade = True;

int Start()

{ 

if (LastTradeBar==Time[ 0 ] ) CanTrade=False; else CanTrade=True; 

if (... && CountOrder< 2 && (BarLast> 1 || BarLast==- 1 ))
{
if (CanTrade)

{

OrderSend ( Symbol (),OP_BUY,MinLot,Ask, 0 ,VStopLossLong, 0 , "BUY: " ,MagicL, 0 , Green );

LastTradeBar=Time[ 0 ];

} 

}
Genel olarak, mantıksal değişken burada gereksizdir.
 
Vinin :


Bu özelliğe göz atın


Vinin, bana güvence verdi, bu fonksiyonda her şey yolunda... return (0), start fonksiyonunu ifade ediyor ve eğer return'ye bağlı olan parantezi saymazsanız, o zaman 14 parantez var ... 7 her yönde
 
CLAIN :

Vinin, bana güvence verdi, bu fonksiyonda her şey yolunda... return (0), start fonksiyonunu ifade ediyor ve eğer return'ye bağlı olan parantezi saymazsanız, o zaman 14 parantez var ... 7 her yönde

Her işlevi ayrı bir dosyaya kopyalayıp yapıştırmaya ve derlemeyi kontrol etmeye yardımcı olur.

Parantezler doğruysa, başlangıcın nerede bittiğini ve MACD sinyalinin nerede başladığını belirtin.

 int start() 
{ 
//---- 

int total,ticket; //объявил тотал и тикет 
int signal = signal_MACD(); //сигнал МАКД передает значение в сигнал
AnalyzeSignal(signal); //аналайз сигнал анализирует сигнал
int MACD[ 8 ] = { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 }; //создал одномерный массив МАКД
MACD[ 0 ] = iMACD ( Symbol (), 1 , 5 , 34 , 5 , PRICE_CLOSE ,MODE_MAIN, 7 ); 
///Бла-бла-бла
MACD[ 7 ] = iMACD ( Symbol (), 1 , 5 , 34 , 5 , PRICE_CLOSE ,MODE_MAIN, 0 ); 

total = OrdersTotal (); //тотал считает ордера
///Тут большая жирная закрывающая скобка, если конечно следующая строчка это функция
int signal_MACD()
 
splxgf :

Her işlevi ayrı bir dosyaya kopyalayıp yapıştırmaya ve derlemeyi kontrol etmeye yardımcı olur.

Parantezler doğruysa, başlangıcın nerede bittiğini ve MACD sinyalinin nerede başladığını belirtin.


hmm... int signal_MACD() gerçekten bir işlevdir... ama neden başlatma işlevinin arkasında olsun ki? Dürüst olmak gerekirse, neden bazı işlevlerin başlangıcın dışında ve bazılarının içeride yazıldığını anlamıyorum... fark nedir?
 
Dürüst olmak gerekirse, bir işlevi diğerinin sınırları içinde tarif etmenin mümkün olup olmadığını bilmiyorum, böyle bir şey görmedim.
Neden: