Tüm terminallerin ortak bir klasörüne yazın. Biri yazar - diğerleri okur ve bir grafik oluşturur. Bu kaba bir genellemedir.
açık, ancak vindex'te bir dosya değişiklik için kullanıldığında, yani yazma anında okumaya erişim kapatılır ve CPU üzerindeki yük büyükse, uzun olabilir, bir şekilde dikkate alınmalıdır.
Word360 veya google'da genel erişim ve genel düzenleme olduğunda, kuyrukla ilgili sorun çözülür. Yazma, otomatik kaydetme ve manuel kaydetme değildir. Ve bir kuyruk var.
Ve böylece, evet, elbette, Commons klasörü sanal alanda değil, dışarıda.
Данная статья знакомит с реализацией межпроцессного взаимодействия между терминалами MetaTrader 5 посредством именованных каналов (named pipes). Предложен класс CNamedPipes, реализующий возможность использования именованных каналов. Рассмотрен тиковый индикатор для тестирования связи между двумя клиентскими терминалами MetaTrader 5 и измерения общей пропускной способности системы. Представленный метод взаимодействия оказался пригодным для отправки котировок в реальном времени.
Перед многими разработчиками встает одинаковая проблема - как пробиться в песочницу торгового терминала без применения небезопасных DLL. Одним из простых и безопасных методов является использование стандартных именованных каналов (Named Pipes), которые работают как обычные файловые операции. Они позволяют организовать межпроцессорное клиент-серверное взаимодействие между программами. Посмотрите практические примеры на C++ и MQL5 в виде сервера, клиента, обмен данными между ними и замер производительности.
İyi günler programcılar! Lütfen bana bir komut dosyası konusunda yardımcı olun. Bir tarih listesi için grafikte çok sayıda dikey çizgi çizmek için komut dosyasına ihtiyacım var. Yani, örneğin: Kodun gövdesine, örneğin 100 tarihlik bir liste giriyorum ve komut dosyası her tarih için dikey bir çizgi çiziyor.
Burada bir şey denemeye başladım, ancak bir şekilde çok hantal olduğu ortaya çıktı ve bu sadece bir satır.
#property strict//--- описание#property description"Скрипт строит графический объект \"Вертикальная линия\"."#property description"Дата точки привязки задается в процентах от ширины"#property description"окна графика в барах."//--- покажем окно входных параметров при запуске скрипта#property script_show_inputs//--- входные параметры скриптаinputstring InpName="VLine"; // Имя линииinputint InpDate=25; // Дата линии в %inputcolor InpColor=clrRed; // Цвет линииinputENUM_LINE_STYLE InpStyle=STYLE_DASH; // Стиль линииinputint InpWidth=3; // Толщина линииinputbool InpBack=false; // Линия на заднем планеinputbool InpSelection=true; // Выделить для перемещенийinputbool InpHidden=true; // Скрыт в списке объектов//+------------------------------------------------------------------+//| Создает вертикальную линию |//+------------------------------------------------------------------+bool VLineCreate(constlong chart_ID=0, // ID графикаconststring name="VLine", // имя линииconstint sub_window=0, // номер подокнаdatetime time=0, // время линииconstcolor clr=clrRed, // цвет линииconstENUM_LINE_STYLE style=STYLE_SOLID, // стиль линииconstint width=1, // толщина линииconstbool back=false, // на заднем планеconstbool selection=true, // выделить для перемещенийconstbool hidden=true) // скрыт в списке объектов
{
//--- если время линии не задано, то проводим ее через последний бар
time=TimeCurrent();
ObjectCreate(chart_ID,name,OBJ_VLINE,sub_window,time,0);
//--- установим цвет линииObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль отображения линииObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим толщину линииObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) планеObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим перемещения линии мышью//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection//--- по умолчанию равен true, что позволяет выделять и перемещать этот объектObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
return(true);
}
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
datetime time=TimeCurrent();
//--- создадим вертикальную линию
VLineCreate(0,InpName,0,time,InpColor,InpStyle,InpWidth,InpBack,
InpSelection,InpHidden);
return;
}
İyi günler programcılar! Lütfen bana bir komut dosyası konusunda yardımcı olun. Bir tarih listesi için grafikte çok sayıda dikey çizgi çizmek için komut dosyasına ihtiyacım var. Yani, örneğin: Kodun gövdesine, örneğin 100 tarihlik bir liste giriyorum ve komut dosyası her tarih için dikey bir çizgi çiziyor.
Burada bir şey denemeye başladım, ancak bir şekilde çok hantal olduğu ortaya çıktı ve sadece bir satır.
Ayırıcı aracılığıyla dizedeki tarih.
Sonra bu dizeyi bir diziye bölün.
Daha sonra her yinelemede dizi boyunca döngü yaparak
Bir çizgi çizmek için herhangi bir şeyi dizeye dönüştürmenize gerek yoktur.
Görevi tarif ettiniz, ancak tam olarak tarif etmediniz, bu yüzden insanlar tahmin etmek zorunda.
Yüz randevuyu nasıl kaydedeceksin?
Bunları senaryonun gövdesine mi yazacaksınız?
yoksa Uzman Danışmanı başlatırken bunları manuel olarak mı gireceksiniz?
Kontrol ettim. İkinci durum iyi, ancak her tarihi pencereye manuel olarak girme ihtiyacı nedeniyle uygun değil, bu da zaman alıcı. Basit olmalı... "ctrl-c, ctrl-v".
İlk durumda, bazı nedenlerden dolayı en son mumda 3 çizgi değil, sadece bir çizgi çiziyor. Neden, henüz net değil, araştırıyorum.
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Tüm terminallerin ortak bir klasörüne yazın. Biri yazar - diğerleri okur ve bir grafik oluşturur. Bu kaba bir genellemedir.
açık, ancak vindex'te bir dosya değişiklik için kullanıldığında, yani yazma anında okumaya erişim kapatılır ve CPU üzerindeki yük büyükse, uzun olabilir, bir şekilde dikkate alınmalıdır.
Word360 veya google'da genel erişim ve genel düzenleme olduğunda, kuyrukla ilgili sorun çözülür. Yazma, otomatik kaydetme ve manuel kaydetme değildir. Ve bir kuyruk var.
Ve böylece, evet, elbette, Commons klasörü sanal alanda değil, dışarıda.
Okuyun: https://www.mql5.com/ru/articles/115
Ve ayrıca: https://www.mql5.com/ru/articles/503
İyi günler!
Lütfen bana ileri testin neden gerekli olduğunu söyleyebilir misiniz?
İyi günler programcılar! Lütfen bana bir komut dosyası konusunda yardımcı olun. Bir tarih listesi için grafikte çok sayıda dikey çizgi çizmek için komut dosyasına ihtiyacım var. Yani, örneğin: Kodun gövdesine, örneğin 100 tarihlik bir liste giriyorum ve komut dosyası her tarih için dikey bir çizgi çiziyor.
Burada bir şey denemeye başladım, ancak bir şekilde çok hantal olduğu ortaya çıktı ve bu sadece bir satır.
İyi günler programcılar! Lütfen bana bir komut dosyası konusunda yardımcı olun. Bir tarih listesi için grafikte çok sayıda dikey çizgi çizmek için komut dosyasına ihtiyacım var. Yani, örneğin: Kodun gövdesine, örneğin 100 tarihlik bir liste giriyorum ve komut dosyası her tarih için dikey bir çizgi çiziyor.
Burada bir şey denemeye başladım, ancak bir şekilde çok hantal olduğu ortaya çıktı ve sadece bir satır.
Ayırıcı aracılığıyla dizedeki tarih.
Sonra bu dizeyi bir diziye bölün.
Daha sonra her yinelemede dizi boyunca döngü yaparak
Teşekkür ederim. Çok yüzeysel bir programcı olduğum için. Sırayla sormaya başlayacağım.
"Tarihi bir sınırlayıcı ile dizeye koy."
" string TimeToString("" kullan
????
????
Bir çizgi çizmek için herhangi bir şeyi dize dönüştürmenize gerek yoktur.
Sorunu tanımladınız, ancak tam olarak tanımlamadınız, bu yüzden insanlar bunu çözmek zorunda.
Yüz tarihi nasıl kaydedeceksiniz?
Bunları kodun gövdesine mi yazacaksınız?
Yoksa Uzman Danışmanı başlatırken bunları manuel olarak mı gireceksiniz?
Bir çizgi çizmek için herhangi bir şeyi dizeye dönüştürmenize gerek yoktur.
Görevi tarif ettiniz, ancak tam olarak tarif etmediniz, bu yüzden insanlar tahmin etmek zorunda.
Yüz randevuyu nasıl kaydedeceksin?
Bunları senaryonun gövdesine mi yazacaksınız?
yoksa Uzman Danışmanı başlatırken bunları manuel olarak mı gireceksiniz?
Kontrol ettim. İkinci durum iyi, ancak her tarihi pencereye manuel olarak girme ihtiyacı nedeniyle uygun değil, bu da zaman alıcı. Basit olmalı... "ctrl-c, ctrl-v".
İlk durumda, bazı nedenlerden dolayı en son mumda 3 çizgi değil, sadece bir çizgi çiziyor. Neden, henüz net değil, araştırıyorum.