Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 461

 
wolfovik :

Sorunu çözmeye yardım edin!

Test cihazındaki EA, ICustom işlevini kullanırken donuyor. Sorunu çözmenin yolları var mı?

Ve test cihazında her zaman bir PB Trade EURUSD hatası vardır,H1: OrderSend hatası 130

300 puan seviyesinde dursa da!

ticket = OrderSend ( Symbol (), OP_BUY , 0.1 , Ask , 5 , Bid - 300 * Point , Bid + 300 * Point );

Böyle bile çalışmıyor

 RefreshRates ();
ticket = OrderSend ( Symbol (), OP_BUY , 0.1 , Ask , 5 , Bid - 300 * Point , Bid + 300 * Point );

Nerede yanlış bir dönüş yaptım?


 
Dmitry01110 :
Merhaba! Lütfen bana FileOpen işlevi tarafından oluşturulan dosyayı nasıl düzenleyeceğimi söyleyin, örneğin, geçerli konumdan bir bayt silin ve bunun yerine başka bir bayt ekleyin!


Ben de benzer bir şey yapmaya çalışıyorum.

Yalnızca bir sütunlu bir *.csv dosyası var, yani. içindeki sayılar birbirinin altına girer. Her numara kullanıldığında, yanına bu numaranın danışman tarafından kullanıldığını gösteren bir simge eklenecek şekilde yapmaya çalışıyorum.

*.csv dosyasını iki sütunlu hazırlamak mümkündür - [SAYI]; [ICON] ve sadece danışman simgesini ve düzenleyecektir.

 
wolfovik :

Ve test cihazında her zaman bir PB Trade EURUSD hatası vardır,H1: OrderSend hatası 130

300 puan seviyesinde dursa da!

Böyle bile çalışmıyor

Nerede yanlış bir dönüş yaptım?


Bir ticaret talebinde hesaplanan fiyatlar, Rakamlara göre normalleştirilmelidir:

ticket = OrderSend ( Symbol (), OP_BUY , 0.1 , Ask , 5 , NormalizeDouble ( Bid - 300 * Point , Digits ), NormalizeDouble ( Bid + 300 * Point , Digits ));

StopLevel gereksinimlerine kabul edilebilirlik için stop emirlerinin değerlerini de kontrol etmeniz gerekir:

 input int   StopLoss    =   300 ;   // Значение Stop Loss в пунктах
input int   TakeProfit  =   300 ;   // Значение Take Profit в пунктах
int    level= 0 , spread= 0 ;
//+------------------------------------------------------------------+
//|   Старт                                                          |
//+------------------------------------------------------------------+
void OnTick () {
   level= MarketInfo ( Symbol (), MODE_STOPLEVEL );
   spread= MarketInfo ( Symbol (), MODE_SPREAD );
   if (level== 0 ) level=spread* 2 ;
//---
   int     ticket= 0 ;
   double sl= 0 , tp= 0 ;
   if (StopLoss> 0 ) sl= NormalizeDouble ( MathMin ( Bid -StopLoss* Point , Bid -(level+ 1 )* Point ), Digits );
   if (TakeProfit> 0 ) tp= NormalizeDouble ( MathMax ( Bid +TakeProfit* Point , Bid +(level+ 1 )* Point ), Digits );
   ticket = OrderSend ( Symbol (), OP_BUY , 0.1 , Ask , 5 ,sl,tp);
   return ;
}

Bunun gibi bir şey satın almak için ...

 
Dmitry01110 :
Merhaba! Lütfen bana FileOpen işlevi tarafından oluşturulan dosyayı nasıl düzenleyeceğimi söyleyin, örneğin, geçerli konumdan bir bayt silin ve bunun yerine başka bir bayt ekleyin!
Dosyanın tüm metnini bir dize değişkenine çağırırsınız, onu basit bir değişken olarak düzenlersiniz, sonra bu dosyayı sadece yazmak için çağırır ve bu değişkeni geri döndürürsünüz.
 
Roger :
Dosyanın tüm metnini bir dize değişkenine çağırırsınız, onu basit bir değişken olarak düzenlersiniz, sonra bu dosyayı sadece yazmak için çağırır ve bu değişkeni geri döndürürsünüz.

Dosyadaki karakter sayısı, dize değişkenindeki maksimum karakter boyutunu aşarsa ne olur?
 
Biraz çözdüm! Dosyadaki bir konumda bir değeri değiştirmek için, FileSeek kullanarak önceki bayta bir işaretçi koymanız ve ardından örneğin FileWriteInteger kullanarak eskisinin üzerine yazacak yeni bir değer yazmanız yeterlidir. Ana şey, eski ve yeni değerlerin aynı boyutta olması gerektiğidir, örneğin int için LONG_VALUE.
 
Bugün terminalimi güncellediler. Şimdi göstergeleri görmüyor ... Ne yapmalı ve doğru koyup koymadığımı. Daha önce olduğu gibi aynı klasörde (yolda).
 

for(int l = StringLen (tfs)-1; l >= 0; l--) { int char = StringGetChar(tfs,l); }

Koddaki hatalar. Neden "char" a küfür ediyor? Nasıl ve ne değiştirilebilir?

 
artmedia70 :
Dosyadaki karakter sayısı, dize değişkenindeki maksimum karakter boyutunu aşarsa ne olur?

Bir dize değişkeninin sınırı yoktur. Aksine var, ama çok büyük. Yapı 529'dan MT4 için bu 2147483647 semboldür ve MT4 32 bit işletim sistemindeyse 2 kat daha azdır. Ve bu her zaman böyle değildir. Farklı anahtarlar ve PAE var...

Dmitry01110 :
Biraz çözdüm! Dosyanın herhangi bir yerindeki bir değeri değiştirmek için, FileSeek'i kullanarak önceki bayta bir işaretçi koymanız ve ardından örneğin FileWriteInteger'ı kullanarak oraya eskisinin üzerine yazacak yeni bir değer yazmanız yeterlidir. Ana şey, eski ve yeni değerlerin aynı boyutta olması gerektiğidir, örneğin int için LONG_VALUE.
Evet, ancak CSV için karakter sayısı eşleşmelidir.

Zolotay :

for(int l = StringLen(tfs)-1; l >= 0; l--) { int nChar = StringGetChar(tfs,l); }

Koddaki hatalar. Neden "char" a küfür ediyor? Nasıl ve ne değiştirilebilir?

 
Teşekkür