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 );
}
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:
// 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ı(); } }
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
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.
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?
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
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...
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));
}
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.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
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.
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?