Evet, görüyorum. Ve sorunun cevabını aşağıdaki gönderide görüyorum https://www.mql5.com/ru/forum/160587/page115#comment_6521492 . Başka bir deyişle, sorun, işlevselliğin mantıksal alt görevlere ayrılmamasıdır. Hepsini üst üste yığdınız: emirleri sıralamak, bir alım satım işlemine karar vermek ve bir alım satım işlemi yapmak.
Bu sorun üç aşamada çözülür:
Programın izlemesi gereken siparişler hakkında bilgi toplama. Bu, zaten sahip olduğunuz siparişleri yineleme döngüsüdür. Döngü yürütmesinin sonucu, bir dizi siparişin oluşumu olmalıdır.
Ticaret sinyallerinin hesaplanması. Hesaplama sonucu, siparişleri açma ve/veya kapatma komutudur. Ticaret stratejisine bağlıdır. Daha önce, numaralandırma yokken, kodları kullanıyordum: 0 - sinyal yok, 1 - Al'ı aç, -1 - Satışı aç, 2 - Al'ı kapat, -2 - Satışı kapat.
Bir ticaret işleminin yürütülmesi. Bir tür alım satım sinyali varsa ve emirlerden biri buna uygunsa (1. nokta), o zaman bir alım satım işlemi gerçekleştirilir. Bundan sonra, 1. adımdan başlayarak tüm algoritma yeniden başlatılır. Bazı durumlarda, bir sonraki tıklamada her şeye devam etmek için OnTick'ten çıkılır.
Teşekkürler. En azından ne yapılacağı belli oldu. Nasıl olduğunu anlamaya çalışacağım. Doğru, henüz dizilerle tanışmadım. Her neyse, tekrar teşekkürler.
Mickey Moose :Bir dosyaya yazdım , her şey yolunda ama şimdi örneğin "eurusd" "1.2242" geçici verileri vb. veriler nasıl ayrıştırılır?
string s=FileReadString(F1); // Bir metin dosyasının sonraki satırını okuma StringSplit(s, "," , a); // Virgülle ayrılmış dize öğelerini bir diziye ayıklayın tarihsaat T1=StrToTime(a[4]); // Sonra dönüşümlerim var ... int ord=StrToInteger(a[8]); double Fiyat=StrToDouble(a[12]);
Teşekkürler. En azından ne yapılacağı belli oldu. Nasıl olduğunu anlamaya çalışacağım. Doğru, henüz dizilerle tanışmadım. Her neyse, tekrar teşekkürler.
En az bir blok yazın ve gösterin. Daha fazla burada bu durumda istemi.
Evet, görüyorum. Ve sorunun cevabını aşağıdaki gönderide görüyorum https://www.mql5.com/ru/forum/160587/page115#comment_6521492 . Başka bir deyişle, sorun, işlevselliğin mantıksal alt görevlere ayrılmamasıdır. Hepsini üst üste yığdınız: emirleri sıralamak, bir alım satım işlemine karar vermek ve bir alım satım işlemi yapmak.
Bu sorun üç aşamada çözülür:
Teşekkürler. En azından ne yapılacağı belli oldu. Nasıl olduğunu anlamaya çalışacağım. Doğru, henüz dizilerle tanışmadım. Her neyse, tekrar teşekkürler.
Bana nasıl çıkacağımı söyle!!!
for(int i=OrdersTotal()-1; i>=0; i--)
{
Sipariş Seçimi (i,SELECT_BY_POS);
if(OrderMagicNumber()==Magic && OrderType()==OP_SEL)
kırmak;
Uyarı şudur: 'OrderSelect' dönüş değeri kontrol edilmelidir
Bu 'OrderSelect' değeri başka nasıl kontrol edilmelidir?
bunu yaparsam: j=OrderSelect(); Bu doğru?
Bana nasıl çıkacağımı söyle!!!
for(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i,SELECT_BY_POS);
if(OrderMagicNumber()==Magic && OrderType()==OP_SEL)
kırmak;
Uyarı şudur: 'OrderSelect' dönüş değeri kontrol edilmelidir
Bu 'OrderSelect' değeri başka nasıl kontrol edilmelidir?
bunu yaparsam: j=OrderSelect(); Bu doğru?
Yardım etmedi!(
string s=FileReadString(F1); // Bir metin dosyasının sonraki satırını okuma
StringSplit(s, "," , a); // Virgülle ayrılmış dize öğelerini bir diziye ayıklayın
tarihsaat T1=StrToTime(a[4]); // Sonra dönüşümlerim var ...
int ord=StrToInteger(a[8]);
double Fiyat=StrToDouble(a[12]);
Teşekkürler. En azından ne yapılacağı belli oldu. Nasıl olduğunu anlamaya çalışacağım. Doğru, henüz dizilerle tanışmadım. Her neyse, tekrar teşekkürler.
En az bir blok yazın ve gösterin. Daha fazla burada bu durumda istemi.
Yardım etmedi!(
tekrar dikkatlice okuyun
tüm kod şöyle görünecek
Yardım etmedi!(
Yani hiçbir şey yapmadın. Yukarıda yazmışlar:
Ve doğrulamadan yazdınız. Her ne kadar böyle daha okunaklı olsa da:
@Ihor Herasko @Alekseu Fedotov
TEŞEKKÜR EDERİM!! BUNA YARDIMCI OLDU!