bool Trade ( int signal)
{
int total = OrdersTotal () - 1 ;
FindOrders();
if (signal == SIGNAL_BUY) // Если сигнал на покупку и открытых ордеров нет..if (!OpenBuy()) // открываем лимитный ордер на покупкуreturn ( false );
if (signal == SIGNAL_SELL) // Если сигнал на продажу и открытых ордеров нет..if (!OpenSell())
return ( false ); // открываем лимитный ордер на продажуfor ( int i=total; i>= 0 ; i--)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderStopLoss() == 0 || OrderTakeProfit() == 0 )
OrdersModifying(); // Модифицируем ордер, добавим SL и TP
}
}
// if(UseBU == true)// MovingStopLossToBU(); // Перевод в б.у. по достижению некоторого значения TPreturn ( true );
}
수정 기능은 다음과 같습니다.
void OrdersModifying()
{
int total = OrdersTotal () - 1 ;
double sl = 0 , tp = 0 ;
for ( int i=total; i>= 0 ; i--)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true ) // Если ордер есть и он выбран..
{
if (g_type == OP_BUY)
{
if (i_sl != 0 ) // Если входной параметр стоп-лосса не равен 0, то..
sl = NormalizeDouble (OrderOpenPrice() - i_sl*pt, Digits ); // Получаем значение стоп-лосса для выбранного ордераif (i_tp != 0 ) // Если входной параметр тейкпрофита не равен 0, то..
tp = NormalizeDouble (OrderOpenPrice() + i_tp*pt, Digits ); // Получаем значение тейкпрофита для выбранного ордера
}
if (g_type == OP_SELL)
{
if (i_sl != 0 ) // Если входной параметр стоп-лосса не равен 0, то..
sl = NormalizeDouble (OrderOpenPrice() + i_sl*pt, Digits ); // Получаем значение стоп-лосса для выбранного ордераif (i_tp != 0 ) // Если входной параметр тейкпрофита не равен 0, то..
tp = NormalizeDouble (OrderOpenPrice() - i_tp*pt, Digits ); // Получаем значение тейкпрофита для выбранного ордера
}
if (sl != 0 || tp != 0 ) // Если полученные значения sl и tp не равныы 0, то..
{
OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400 ,Lime); // Модифицируем ордер
}
}
}
}
줄 앞의 OrderSelect(g_ticket,SELECT_BY_TICKET) if(OrderStopLoss() == 0 || OrderTakeProfit() == 0)
내가 한 일은 다음과 같습니다.
bool Trade ( int signal)
{
int total = OrdersTotal () - 1 ;
FindOrders();
if (signal == SIGNAL_BUY) // Если сигнал на покупку и открытых ордеров нет..if (!OpenBuy()) // открываем лимитный ордер на покупкуreturn ( false );
if (signal == SIGNAL_SELL) // Если сигнал на продажу и открытых ордеров нет..if (!OpenSell())
return ( false ); // открываем лимитный ордер на продажуif ( OrderSelect (g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true )
{
if (OrderStopLoss() == 0 || OrderTakeProfit() == 0 )
OrdersModifying(); // Модифицируем ордер, добавим SL и TP
}
// if(UseBU == true)// MovingStopLossToBU(); // Перевод в б.у. по достижению некоторого значения TPreturn ( true );
}
정류장과 테이크가 없습니다. 오류 130이 로그에 기록되어 있으며 올바른 발이 아니라고 말합니다. 이유를 알 수 없습니다.
현재 다음 거래 기능이 있습니다.
수정이 이루어지지 않습니다.
Trade() 함수에서 주문을 선택하지 않았습니다.
나는 당신이 스크립트에서 원하는 것을 이해하지 못합니다.
시작 시 아카이브 차트에 표시되는 프로그램이 필요합니다.
움직임의 강도와 이 움직임의 시간에 대해 지정된 매개변수가 있는 가격 움직임의 섹션이 시각적으로 표시됩니다.
예를 들어 - 400점 수정, 30분 만에 완료. 지난 1년 동안 이 범위의 모든 수정 사항이 적용되었습니다.
수동으로 시각적으로 찾는 것은 불가능합니다. 왜곡. 색상 지정으로 바람직 할 것이므로 즉시 눈에.
___
나는 다른 프로그램 "Histoty"를 보았습니다. 그러나 그들은 계정 기록만 렌더링합니다.
하지만 주어진 필터에 대한 가격대를 찾지 못했습니다.
Trade() 함수에서 주문을 선택하지 않았습니다.
그런 것이 있습니다. 여기에서 수정됩니다.
수정 기능은 다음과 같습니다.
이상하지만 다시 정류장이없고 출구에서 걸립니다.
시작 시 아카이브 차트에 표시되는 프로그램이 필요합니다.
움직임의 강도와 이 움직임의 시간에 대해 지정된 매개변수가 있는 가격 움직임의 섹션이 시각적으로 표시됩니다.
예를 들어 - 400점 수정, 30분 만에 완료. 지난 1년 동안 이 범위의 모든 수정 사항이 적용되었습니다.
수동으로 시각적으로 찾는 것은 불가능합니다. 왜곡. 색상 지정으로 바람직 할 것이므로 즉시 눈에.
___
나는 다른 프로그램 "Histoty"를 보았습니다. 그러나 그들은 계정 기록만 렌더링합니다.
하지만 주어진 필터에 대한 가격대를 찾지 못했습니다.
History, History_Draw - 테스트할 때 Expert Advisors처럼 작동합니다.
여기에서 주어진 매개변수에 따라 기록에서 수정 사항을 보려면 이와 같은 것이 필요합니다.
Symbol() MT4 관련 문제:
설명할 2가지 기능:
첫 번째를 실행하면 빈 문자열이 출력됩니다.
다음은 두 번째 함수 문자열 식별자 "EURUSD"입니다(차트에 따라 다르지만 출력은 함수 논리에 따라 빈 문자열이 있어야 함).
무엇이 잘못되었는지 이해하도록 도와주시겠습니까? 감사해요
Trade() 함수에서 주문을 선택하지 않았습니다.
그런데. 그리고 Trade() 함수에서 주문을 선택하는 요점은 무엇입니까? 주문이 선택되고 수정되는 OrdersModifying() 함수 를 호출합니다. 저것들. 원래 버전이 정확했습니다!
그런 것이 있습니다. 여기에서 수정됩니다.
수정 기능은 다음과 같습니다.
이상하지만 다시 정류장이없고 출구에서 걸립니다.
줄 앞의 OrderSelect (g_ticket,SELECT_BY_TICKET) if(OrderStopLoss() == 0 || OrderTakeProfit() == 0)
History, History_Draw - 테스트할 때 Expert Advisors처럼 작동합니다.
여기에서 주어진 매개변수에 따라 기록에서 수정 사항을 보려면 이와 같은 것이 필요합니다.
역사에서, 아니면 차트에서? 어떤 형태로 결과를 보고 싶습니까? 차트 창에서 별도의 창에서 표 형식으로 인쇄 된 경우 어떤 데이터 로 다른 색상의 양초 형태로 움직임의 시작과 끝을 연결하는 선 형태로? 좀 더 구체적으로, 시간이 되면 해줄게.
줄 앞의 OrderSelect(g_ticket,SELECT_BY_TICKET) if(OrderStopLoss() == 0 || OrderTakeProfit() == 0)
내가 한 일은 다음과 같습니다.
정류장과 테이크가 없습니다. 오류 130이 로그에 기록되어 있으며 올바른 발이 아니라고 말합니다. 이유를 알 수 없습니다.
내가 한 일은 다음과 같습니다.
정류장과 테이크가 없습니다. 발이 올바르지 않다는 오류 130이 로그에 기록됩니다. 이유를 알 수 없습니다.
아니요, OrderSelect (g_ticket,SELECT_BY_TICKET,MODE_TRADES)만 있으면 OrdersModifying()에 그대로 둘 수 있습니다.
//+----------------------------------------------- --------------------+
무효 OrdersModifying()
{
주문 선택(g_ticket,SELECT_BY_TICKET,MODE_TRADES);
if(g_type == OP_BUY)
{
if(i_sl != 0)sl = NormalizeDouble(OrderOpenPrice() - i_sl*pt, 숫자); // 손절매 입력 매개변수가 0이 아니면..
// 선택한 주문 에 대한 손절매 값을 가져옵니다.
if(i_tp != 0)tp = NormalizeDouble(OrderOpenPrice() + i_tp*pt,자리수); // takeprofit 입력 매개변수가 0이 아니면..
// 선택한 주문에 대한 이익실현 값을 가져옵니다.
}
if(g_type == OP_SELL)
{
if(i_sl != 0)sl = NormalizeDouble(OrderOpenPrice() + i_sl*pt,자리수); // 손절매 입력 매개변수가 0이 아니면..
// 선택한 주문에 대한 손절매 값을 가져옵니다.
if(i_tp != 0)tp = NormalizeDouble(OrderOpenPrice() - i_tp*pt,자리수); // takeprofit 입력 매개변수가 0이 아니면..
// 선택한 주문에 대한 이익실현 값을 가져옵니다.
}
if(sl != 0 || tp != 0) // 수신한 sl과 tp의 값이 0이 아니면..
{
OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400,라임); // 주문 수정
}
}