Vitalie Postolache와 Vitaly Muzichenko 정보를 얻을 수 있는 곳을 알려주셨어요! 모든 것이 단순하게 렌더링되었습니다. 통화 금액을 포인트 가치로 나누어야 했습니다. 600/MarketInfo(Symbol(),SYMBOL_POINT) 감사합니다.
Rustam Bikbulatov : Vitalie Postolache와 Vitaly Muzichenko 정보를 얻을 수 있는 곳을 알려주셨어요! 모든 것이 단순하게 렌더링되었습니다. 통화 금액을 포인트 가치로 나누어야 했습니다. 600/MarketInfo(Symbol(),SYMBOL_POINT) 감사합니다.
잘못된 결정입니다. 얇은 것을 부드러움과 함께 넣고 투명하게 출력을 기대하는 것과 같습니다.
포인트(틱)의 값은 작성한 값이 아니라(MarketInfo(Symbol(),SYMBOL_POINT)와 같은 쿼리가 전혀 없음) MarketInfo(Symbol(),MODE_TICKVALUE)입니다.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.03.2013 |//| Описание : Закрытие позиций по рыночной цене |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| ll - размер лота. |//+----------------------------------------------------------------------------+void ClosePositions(string sy="", int op=-1, int mn=-1, double ll=0) {
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (ll<=0) ll=OrderLots();
if (ll>OrderLots()) {
ClosePosBySelect(OrderLots());
ll-=OrderLots();
} else ClosePosBySelect(ll);
}
}
}
}
}
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 18.04.2013 |//| Описание : Закрывает торговый терминал. |//+----------------------------------------------------------------------------+void CloseTerminal() {
Print("Сработала функция CloseTerminal()");
int hwnd=WindowHandle(Symbol(), Period());
int hwnd_parent=0;
while (hwnd==0) {
hwnd=WindowHandle(Symbol(), Period());
if (IsStopped()) break;
Sleep(5);
}
while(!IsStopped()) {
hwnd=GetParent(hwnd);
if (hwnd==0) break;
hwnd_parent=hwnd;
}
if (hwnd_parent!=0) PostMessageA(hwnd_parent, WM_CLOSE, 0, 0);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 08.03.2013 |//| Описание : Удаление одного предварительно выбранного ордера. |//+----------------------------------------------------------------------------+void DeleteOrderBySelect() {
bool fd;
int err, it;
for (it=1; it<=NumberOfTry; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
fd=OrderDelete(OrderTicket(), clDelete);
if (fd) {
if (UseSound) PlaySound(SoundSuccess); break;
} else {
err=GetLastError();
if (UseSound) PlaySound(SoundError);
Message("Error("+err+") delete order "+GetNameOP(OrderType())
+": "+ErrorDescription(err)+", try "+it);
Sleep(1000*5);
}
}
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 08.03.2013 |//| Описание : Удаление ордеров |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любой ордер) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+void DeleteOrders(string sy="", int op=-1, int mn=-1) {
int i, k=OrdersTotal(), ot;
if (sy=="0") sy=Symbol();
for (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if (ot>1 && ot<6) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn) DeleteOrderBySelect();
}
}
}
}
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 01.09.2005 |//| Описание : Возвращает наименование торговой операции |//+----------------------------------------------------------------------------+//| Параметры: |//| op - идентификатор торговой операции |//+----------------------------------------------------------------------------+string GetNameOP(int op) {
switch (op) {
caseOP_BUY : return("Buy");
caseOP_SELL : return("Sell");
caseOP_BUYLIMIT : return("BuyLimit");
caseOP_SELLLIMIT: return("SellLimit");
caseOP_BUYSTOP : return("BuyStop");
caseOP_SELLSTOP : return("SellStop");
default : return("Unknown Operation");
}
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает суммарный профит открытых позиций в валюте депозита |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+double GetProfitOpenPosInCurrency(string sy="", int op=-1, int mn=-1) {
double p=0;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
return(p);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 01.02.2008 |//| Описание : Возвращает одно из двух значений взависимости от условия. |//+----------------------------------------------------------------------------+string IIFs(bool condition, string ifTrue, string ifFalse) {
if (condition) return(ifTrue); elsereturn(ifFalse);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 08.03.2013 |//| Описание : Вывод текстового сообщения. |//+----------------------------------------------------------------------------+//| Параметры: |//| ms - текст сообщения |//| nv - флаги направлений вывода сообщения: (0-выкл, 1-вкл) |//| Alert, Comment, Print, SendMail, SendNotification |//| am - флаг всех повторяющихся сообщений |//+----------------------------------------------------------------------------+void Message(string ms, string nv="01100", bool am=False) {
staticstring prevMessage="";
string as[];
int i, k;
if (StrToInteger(StringSubstr(nv, 1, 1))==1) Comment(ms);
if ((StringLen(ms)>0) && (am || prevMessage!=ms)) {
if (StrToInteger(StringSubstr(nv, 0, 1))==1) {
k=StrSplit(ms, as, "\n");
for (i=0; i<k; i++) Alert(as[i]);
}
if (StrToInteger(StringSubstr(nv, 2, 1))==1) {
k=StrSplit(ms, as, "\n");
for (i=0; i<k; i++) Print(as[i]);
}
if (StrToInteger(StringSubstr(nv, 3, 1))==1) SendMail(WindowExpertName(), ms);
if (StrToInteger(StringSubstr(nv, 4, 1))==1) SendNotification(ms);
prevMessage=ms;
}
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 01.09.2005 |//| Описание : Возвращает строку в ВЕРХНЕМ регистре |//+----------------------------------------------------------------------------+string StringUpper(string s) {
int c, i, k=StringLen(s), n;
for (i=0; i<k; i++) {
n=0;
c=StringGetChar(s, i);
if (c>96 && c<123) n=c-32; // a-z -> A-Zif (c>223 && c<256) n=c-32; // а-я -> А-Яif (c==184) n=168; // ё -> Ёif (n>0) s=StringSetChar(s, i, n);
}
return(s);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 20.01.2012 |//| Описание : Разбиение строки на массив элементов |//+----------------------------------------------------------------------------+//| Возврат: |//| Количество элементов в массиве |//| Параметры: |//| st - строка с разделителями |//| as - строковый массив |//| de - разделитель |//+----------------------------------------------------------------------------+int StrSplit(string st, string& as[], string de=",") {
int i=0, np;
string stp;
ArrayResize(as, 0);
while (StringLen(st)>0) {
np=StringFind(st, de);
if (np<0) {
stp=st;
st="";
} else {
if (np==0) stp=""; else stp=StringSubstr(st, 0, np);
st=StringSubstr(st, np+1);
}
i++;
ArrayResize(as, i);
as[i-1]=stp;
}
return(ArraySize(as));
}
//+----------------------------------------------------------------------------+
Fibo 수준은 각 라인에 대해 다른 스타일과 색상으로 이러한 개체로 만들 수 없습니다. 무지개가 필요한 경우 별도의 선으로 그립니다.
아쉽네요 감사합니다)
Vitalie Postolache와 Vitaly Muzichenko 정보를 얻을 수 있는 곳을 알려주셨어요! 모든 것이 단순하게 렌더링되었습니다. 통화 금액을 포인트 가치로 나누어야 했습니다. 600/MarketInfo(Symbol(),SYMBOL_POINT) 감사합니다.
잘못된 결정입니다. 얇은 것을 부드러움과 함께 넣고 투명하게 출력을 기대하는 것과 같습니다.
포인트(틱)의 값은 작성한 값이 아니라(MarketInfo(Symbol(),SYMBOL_POINT)와 같은 쿼리가 전혀 없음) MarketInfo(Symbol(),MODE_TICKVALUE)입니다.
통화 금액을 랏과 틱 비용으로 나눌 필요가 있습니다.
잘못된 결정입니다. 얇은 것을 부드러움과 함께 넣고 투명하게 출력을 기대하는 것과 같습니다.
포인트(틱) 값은 작성하신 값이 아니라(MarketInfo(Symbol(),SYMBOL_POINT)와 같은 쿼리가 전혀 없음) MarketInfo(Symbol(),MODE_TICKVALUE)입니다.
통화 금액을 랏과 틱 비용으로 나눌 필요가 있습니다.
글쎄, 나는 모른다. 나는 이 원칙에 따라 모든 것을 보여주고 닫습니다. MODE_TICKVALUE를 추가하려고 시도했지만 동일한 결과를 보여줍니다. 알겠습니다. 제안으로 변경하겠습니다.)
다시 안녕. 유명한 프로그래머의 코드를 변경하는 방법을 알려주세요. 현재 이 올빼미는 초당 약 한 거래를 마감합니다. 포지티브, 네거티브 거래에 상관없이 일정 이익을 넘어서면 즉시 거래를 마감하도록 변경하고 싶습니다.
다시 안녕. 유명한 프로그래머의 코드를 변경하는 방법을 알려주세요. 현재 이 올빼미는 초당 약 한 거래를 마감합니다. 포지티브, 네거티브 거래에 상관없이 일정 이익을 넘어서면 즉시 거래를 마감하도록 변경하고 싶습니다.
MT4는 한 번에 모든 것을 닫는 방법을 알지 못하고 하나씩만 닫습니다. MT5로 전환하면 동시 종료가 됩니다.
글쎄, 그것은 차례로) 단지 하나의 거래가 약 1초에 한 번 성사되는 것이 당연합니다. 너무 깁니다.
내가 이해하는 한 트랜잭션을 닫을 때 전체 코드를 확인하여 다음 트랜잭션을 닫습니다.
글쎄, 그것은 차례로) 단지 하나의 거래가 약 1초에 한 번 성사되는 것이 당연합니다. 너무 깁니다.
내가 이해하는 한 트랜잭션을 닫을 때 전체 코드를 확인하여 다음 트랜잭션을 닫습니다.
줄을 주석 처리하고 하나의 기능이 작동하도록 하십시오.