Vitaly Muzichenko : Fiyatları hemen mi değiştiriyorsunuz yoksa onları alıp sonra hesaplamaya mı yerleştiriyorsunuz?
Vitaly Muzichenko : Fiyatları hemen mi değiştiriyorsunuz yoksa onları alıp sonra hesaplamaya mı yerleştiriyorsunuz?
int k=dönem; for(int i=1; i<=dönem; i++) { H1_Close[i]=Kapat[k]; k--; } Onlara son kapalı çubuktan başlayan süreye eşit bir zaman oturumu parçası alıyorum ve dizide yansıtılması için ters çeviriyorum. thaysesion 1'de sondan bir önceki çubuktur ve anladığım kadarıyla hesaplama i-th'den başlamalıdır. onlar. işlevim, son kapatılan çubuğun SMMA değerini döndürmelidir.
Herkese iyi günler. Aşağıdaki kod basit bir fikri kodlar. Son kapalı sipariş SAT ise Son kapatılan sipariş SL tarafından kapatılmışsa SEL siparişini aç
if ( OrderSelect (Ht- 1 , SELECT_BY_POS , MODE_HISTORY )) if ( OrderType ()== OP_SELL ) X = OrderProfit ( );
if ( OrderSelect (Ht- 1 , SELECT_BY_POS , MODE_HISTORY )) if ( OrderType ()== OP_BUY ) if (X < 0 )
OrderSend ( Symbol (), OP_SELL , 0.1 , Bid , 3 , Ask + 400 * Point , Ask - 200 * Point , "17-10" , 123 );
SORU Bu koda iki yeni koşul daha eklemek için hangi dil yapısı kullanılabilir (kırmızı ile vurgulanmıştır)
Son kapalı sipariş SAT ise Sondan bir önceki sipariş SAT ise Son kapatılan sipariş SL tarafından kapatılmışsa PRE-son kapalı sipariş CL tarafından kapatılmışsa
Yardım için teşekkürler.
Kodu yazarsanız ve yapılması gerekenleri kelimelerle açıklamazsanız çok minnettar olurum.
Merhaba. Bekleyen tüm siparişleri kaldırmak için bir komut dosyası yazıyorum. Ancak, yalnızca bir siparişi siler. Her zaman bekleyen iki veya bir tane emrim var. Her durumda, yalnızca Buy Stop'u kaldırır. Sell Stop'u kaldırmak için, başka Buy Stop emri olmaması koşuluyla betiği yeniden çalıştırmanız gerekir. Lütfen bana hatanın nerede olduğunu söyle.
0B53RV3R : Merhaba. Bekleyen tüm siparişleri kaldırmak için bir komut dosyası yazıyorum. Ancak, yalnızca bir siparişi siler. Her zaman bekleyen iki veya bir tane emrim var. Her durumda, yalnızca Buy Stop'u kaldırır. Sell Stop'u kaldırmak için, başka Buy Stop emri olmaması koşuluyla betiği yeniden çalıştırmanız gerekir. Lütfen bana hatanın nerede olduğunu söyle.
geçersiz DeleteOrders()
{
int Toplam=SiparişToplam();
for(int i=0;i<Toplam;i++)
if(SiparişSeçimi(i,SELECT_BY_POS))
{
int type=OrderType(), bilet=OrderTicket();
bool c;
anahtar (tip)
{
durum 4:
c=SiparişSil(bilet);
eğer(!c)
Yazdır(GetLastError());
kırmak;
durum 5:
c=SiparişSil(bilet);
eğer(!c)
Yazdır(GetLastError());
kırmak;
}
}
}
(i=total-1;i>=0;i--) için yineleme yönünü değiştirin
Maxim Kuznetsov : (i=total-1;i>=0;i--) için yineleme yönünü değiştirin
Teşekkürler, şimdi çalışıyor. 0 indeksli bir emri silerken indeks 1'e sahip emrin indeks 0'a atandığını ve bir sonraki iterasyonda i == 1 olduğunu, ancak böyle bir emir olmadığını doğru anladım mı? Söyle bana, olur mu?
0B53RV3R : Teşekkürler, şimdi çalışıyor. 0 indeksli bir emri silerken indeks 1'e sahip emrin indeks 0'a atandığını ve bir sonraki iterasyonda i == 1 olduğunu, ancak böyle bir emir olmadığını doğru anladım mı? Söyle bana, olur mu?
Özelleştirilebilir fraktalların bir işlevi var, kahretsin, bazıları çok ağır. Nesnelerin çizimini sadece fraktal oluşumunun doğruluğunu görsel olarak göstermek için bıraktım - olmayacak.
Soru: Görsel test nasıl kolaylaştırılabilir, aksi takdirde körelir:
externint FrLeft= 15 ; // Баров слева externint FrRight= 5 ; // Баров справа
//----------------------------------------------------------------------------------------------- voidOnTick () { int nFrUp= GetBarFractal( Symbol (), PERIOD_CURRENT ,FrLeft,FrRight, 0 , MODE_UPPER ); // Возвращает номер бара int nFrDn= GetBarFractal( Symbol (), PERIOD_CURRENT ,FrLeft,FrRight, 0 , MODE_LOWER ); // Возвращает номер бара double FrHigh = High [nFrUp]; // Цена верхнего фрактала double FrLow = Low [nFrDn]; // Цена нижнего фрактала
SetArrow( "FrUp" + "_" +( string ) Time [nFrUp], Time [nFrUp], High [nFrUp], clrDeepSkyBlue , 217 , 2 , ANCHOR_BOTTOM ); SetArrow( "FrDn" + "_" +( string ) Time [nFrDn], Time [nFrDn], Low [nFrDn], clrDeepPink , 218 , 2 , ANCHOR_TOP );
Özelleştirilebilir fraktalların bir işlevi var, kahretsin, bazıları çok ağır. Nesnelerin çizimini sadece fraktal oluşumunun doğruluğunu görsel olarak göstermek için bıraktım - olmayacak.
Soru: Görsel test nasıl kolaylaştırılabilir, aksi takdirde körelir:
Teşekkür ederim!
Sadece hepsini bir göstergeye dönüştürerek kolaylaştırabilirsiniz. Test, grafiğin sol üst köşesindeki yorumu ve özellikle testçinin kendi koyduğu pozisyonları açma ve kapama işaretlerini bile yavaşlatır.
Fiyatları hemen mi değiştiriyorsunuz yoksa onları alıp sonra hesaplamaya mı yerleştiriyorsunuz?
Fiyatları hemen mi değiştiriyorsunuz yoksa onları alıp sonra hesaplamaya mı yerleştiriyorsunuz?
for(int i=1; i<=dönem; i++)
{
H1_Close[i]=Kapat[k];
k--;
}
Onlara son kapalı çubuktan başlayan süreye eşit bir zaman oturumu parçası alıyorum ve dizide yansıtılması için ters çeviriyorum. thaysesion 1'de sondan bir önceki çubuktur ve anladığım kadarıyla hesaplama i-th'den başlamalıdır.
onlar. işlevim, son kapatılan çubuğun SMMA değerini döndürmelidir.
Aşağıdaki kod basit bir fikri kodlar.
Son kapalı sipariş SAT ise
Son kapatılan sipariş SL tarafından kapatılmışsa
SEL siparişini aç
if ( OrderType ()== OP_SELL )
X = OrderProfit ( );
if ( OrderSelect (Ht- 1 , SELECT_BY_POS , MODE_HISTORY ))
if ( OrderType ()== OP_BUY )
if (X < 0 )
OrderSend ( Symbol (), OP_SELL , 0.1 , Bid , 3 , Ask + 400 * Point , Ask - 200 * Point , "17-10" , 123 );
SORU
Bu koda iki yeni koşul daha eklemek için hangi dil yapısı kullanılabilir (kırmızı ile vurgulanmıştır)
Son kapalı sipariş SAT ise
Sondan bir önceki sipariş SAT ise
Son kapatılan sipariş SL tarafından kapatılmışsa
PRE-son kapalı sipariş CL tarafından kapatılmışsa
Yardım için teşekkürler.
Kodu yazarsanız ve yapılması gerekenleri kelimelerle açıklamazsanız çok minnettar olurum.
Merhaba. Bekleyen tüm siparişleri kaldırmak için bir komut dosyası yazıyorum. Ancak, yalnızca bir siparişi siler. Her zaman bekleyen iki veya bir tane emrim var. Her durumda, yalnızca Buy Stop'u kaldırır. Sell Stop'u kaldırmak için, başka Buy Stop emri olmaması koşuluyla betiği yeniden çalıştırmanız gerekir. Lütfen bana hatanın nerede olduğunu söyle.
(i=total-1;i>=0;i--) için yineleme yönünü değiştirin
Teşekkürler, şimdi çalışıyor. 0 indeksli bir emri silerken indeks 1'e sahip emrin indeks 0'a atandığını ve bir sonraki iterasyonda i == 1 olduğunu, ancak böyle bir emir olmadığını doğru anladım mı? Söyle bana, olur mu?
Özelleştirilebilir fraktalların bir işlevi var, kahretsin, bazıları çok ağır. Nesnelerin çizimini sadece fraktal oluşumunun doğruluğunu görsel olarak göstermek için bıraktım - olmayacak.
Soru: Görsel test nasıl kolaylaştırılabilir, aksi takdirde körelir:
extern int FrRight= 5 ; // Баров справа
//-----------------------------------------------------------------------------------------------
void OnTick ()
{
int nFrUp= GetBarFractal( Symbol (), PERIOD_CURRENT ,FrLeft,FrRight, 0 , MODE_UPPER ); // Возвращает номер бара
int nFrDn= GetBarFractal( Symbol (), PERIOD_CURRENT ,FrLeft,FrRight, 0 , MODE_LOWER ); // Возвращает номер бара
double FrHigh = High [nFrUp]; // Цена верхнего фрактала
double FrLow = Low [nFrDn]; // Цена нижнего фрактала
SetArrow( "FrUp" + "_" +( string ) Time [nFrUp], Time [nFrUp], High [nFrUp], clrDeepSkyBlue , 217 , 2 , ANCHOR_BOTTOM );
SetArrow( "FrDn" + "_" +( string ) Time [nFrDn], Time [nFrDn], Low [nFrDn], clrDeepPink , 218 , 2 , ANCHOR_TOP );
// Comment("Price: ",FrHigh,", Num: ",nFrUp,"\nPrice: ",FrLow,", Num: ",nFrDn);
}
//----------------------------------------------------------------------------------------------+
//---------------------- Возвращает номер бара фрактала (настраиваемый) ------------------------+
//----------------------------------------------------------------------------------------------+
int GetBarFractal( string symb, ENUM_TIMEFRAMES tf= 0 , int nLeft= 2 , int nRight= 2 , int numFr= 0 , int mode= MODE_UPPER ) {
int i= 0 ,cn= 0 ,pos= 0 ,r= 0 ,l= 0 ,e= 0 ,equals,bars;
double _high[], _low[];
nLeft=nLeft<= 2 ? 2 :nLeft;
nRight=nRight<= 2 ? 2 :nRight;
equals=nLeft+nRight;
bars= Bars (symb,tf)-equals;
ArraySetAsSeries (_high, true );
ArraySetAsSeries (_low, true );
for (pos=nRight+ 1 ; pos<bars; pos++) {
r=nRight;
if (mode== MODE_UPPER ) {
CopyHigh (symb,tf, 0 ,pos+equals+ 1 ,_high);
for (i= 1 ; i<=r; i++) {
if (_high[pos]<=_high[pos-i]) break ;
}}
if (mode== MODE_LOWER ) {
CopyLow (symb,tf, 0 ,pos+equals+ 1 ,_low);
for (i= 1 ; i<=r; i++) {
if (_low[pos]>=_low[pos-i]) break ;
}}
//--
if (i==r+ 1 ) {
l=nLeft;
e=equals;
for ( int j= 1 ; j<=l+equals; j++) {
if (mode== MODE_UPPER ) {
if (_high[pos]<_high[pos+j]) break ;
if (_high[pos]>_high[pos+j]) l--;
if (_high[pos]==_high[pos+j]) e--;
}
if (mode== MODE_LOWER ) {
if (_low[pos]>_low[pos+j]) break ;
if (_low[pos]<_low[pos+j]) l--;
if (_low[pos]==_low[pos+j]) e--;
}
if (l== 0 ) {
cn++;
if (cn>numFr) return (pos);
}
//--
if (e< 0 ) break ;
}}
}
Print ( __FUNCTION__ ": Фрактал не найден" );
return ( 0 );
}
//----------------------------------------------------------------------------------------------+
//------------------- Функция рисования значка на графике, объект OBJ_ARROW --------------------+
//----------------------------------------------------------------------------------------------+
void SetArrow( string nm= "" , datetime t1= 0 , double p1= 0 , color col= clrRed ,
int code= 252 , int width= 1 , int anchor= 0 ) {
if ( ObjectFind ( 0 ,nm)==- 1 ) {
ObjectCreate ( 0 ,nm, OBJ_ARROW , 0 , 0 , 0 );
ObjectSetInteger ( 0 ,nm, OBJPROP_COLOR ,col);
ObjectSetInteger ( 0 ,nm, OBJPROP_ARROWCODE ,code);
ObjectSetInteger ( 0 ,nm, OBJPROP_ANCHOR ,anchor);
ObjectSetInteger ( 0 ,nm, OBJPROP_WIDTH ,width);
ObjectSetInteger ( 0 ,nm, OBJPROP_SELECTED , false );
ObjectSetInteger ( 0 ,nm, OBJPROP_SELECTABLE , true );
ObjectSetInteger ( 0 ,nm, OBJPROP_HIDDEN , false );
ObjectSetDouble ( 0 ,nm, OBJPROP_PRICE ,p1);
ObjectSetInteger ( 0 ,nm, OBJPROP_TIME ,t1);
}
}
Teşekkür ederim!
Özelleştirilebilir fraktalların bir işlevi var, kahretsin, bazıları çok ağır. Nesnelerin çizimini sadece fraktal oluşumunun doğruluğunu görsel olarak göstermek için bıraktım - olmayacak.
Soru: Görsel test nasıl kolaylaştırılabilir, aksi takdirde körelir:
Teşekkür ederim!
Merhaba. Yeni başlayana söyleme.
İşte bir örnek:
if(Koşul1)
if(Koşul2)
{
}
başka
{
}
Programa göre, Else if(condition1)'e atıfta bulunmalıdır ve Koşul1 karşılanmazsa yürütülür.
Ve aslında, Koşul 2 karşılanmazsa yürütülür.
Merhaba. Yeni başlayana söyleme.
İşte bir örnek:
if(Koşul1)
if(Koşul2)
{
}
başka
{
}
Programa göre, Else if(condition1)'e atıfta bulunmalıdır ve Koşul1 karşılanmazsa yürütülür.
Ve aslında, Koşul 2 karşılanmazsa yürütülür.
Durumla birlikte hemen kaşlı ayraç koyma alışkanlığı edinin
if(Koşul)
{
}
A senin sorunun üzerine
{
if (Условие 2 )
{
}
}
else
{
}