MT4 ile örneğe göre yapılmıştır "STRINGS: ASCII KARAKTER TABLOSU VE KULLANIMI"
//+------------------------------------------------------------------+//| StringLowerCase |//+------------------------------------------------------------------+string StringLowerCase( string str)
{
string s = str;
int lenght = StringLen (str) - 1 , symbol;
while (lenght >= 0 )
{
symbol = StringGetChar(s, lenght);
if ((symbol > 64 && symbol < 91 ) || (symbol > 191 && symbol < 224 ))
s = StringSetChar(s, lenght, symbol + 32 ); // тут possible loss of data due to type conversionelseif (symbol > - 65 && symbol < - 32 )
s = StringSetChar(s, lenght, symbol + 288 ); // тут possible loss of data due to type conversion
lenght--;
}
return (s);
}
//+------------------------------------------------------------------+//| StringUpperCase |//+------------------------------------------------------------------+string StringUpperCase( string str)
{
string s = str;
int lenght = StringLen (str) - 1 , symbol;
while (lenght >= 0 )
{
symbol = StringGetChar(s, lenght);
if ((symbol > 96 && symbol < 123 ) || (symbol > 223 && symbol < 256 ))
s = StringSetChar(s, lenght, symbol - 32 ); // тут possible loss of data due to type conversionelseif (symbol > - 33 && symbol < 0 )
s = StringSetChar(s, lenght, symbol + 224 ); // тут possible loss of data due to type conversion
lenght--;
}
return (s);
}
Dediğiniz gibi yaptım, sadece bir nedenden dolayı, kapanıştan sonra danışman, CloseAll() işlevinden sonra bir saat uykum olmasına rağmen, anlaşmaları birkaç kez açıp kapatıyor.
Teşekkürler, başka bir çözüm var mı? Bundan sonra, danışman anlaşmayı açar ve hemen kapatır.
sağlanan zamanı düzeltmeniz gerekiyor
ve pozisyonlar kapanana kadar tekrar güncellemeyin
sonra şimdiki zamandan hatırladığınız zamanı çıkarın
belirtilen saniye geçtiğinde, pozisyonları kapatın
öyle yaptım
doubleop = CalculateProfit();
int zaman_bekleme=0;
if (op >= Kâr)
time_waiting = TimeLocal() + 10;
if (TimeLocal() < time_waiting)
{
Hepsini kapat();
}
ama bende hata veriyor
tür dönüştürme nedeniyle olası veri kaybı
bu bir hata değil, bir uyarıdır: bir türden diğerine dönüştürülürken veriler kaybolabilir:
datetime time_waiting;Yani, danışmanın 2 dolar görür görmez hemen kapanmasını istemiyorum, biraz daha fazlasını.
ve ne, her zaman 10 saniye sonra kâr daha mı büyük?)
Zor değilse, lütfen düzeltmeme yardım et ..
Tüm sorumluluğu üstlenerek, aşağıdakileri göz önünde bulundurarak:
kısa
İmzasız kısa tür ushort olup, boyutu da 2 bayttır. Minimum değer 0, maksimum değer 65535'tir.
int
Tamsayı türü int , 4 bayt (32 bit) bir boyuta sahiptir. Minimum değer -2 147 483 648, maksimum değer 2 147 483 647'dir.
Dediğiniz gibi yaptım, sadece bir nedenden dolayı, kapanıştan sonra danışman, CloseAll() işlevinden sonra bir saat uykum olmasına rağmen, anlaşmaları birkaç kez açıp kapatıyor.
doubleop = CalculateProfit();
if (op >= Kâr && LastTime == 0)
LastTime = TimeCurrent();
if(LastTime > 0 && TimeCurrent () - LastTime >= Saniye)
{
Hepsini kapat();
SonZaman = 0;
SendNotification ("Ticaret sona erdi");
Uyku(60*60000);// 60.000 = 1 dk
}