//-----------------Закрытие по истории в безубыток--------------------//---------------------расчет по истории ордеров номера очередной итерации-----------------------------------------------
Iteration = 0 ; // зануляем инерации перед их учетом в цикле по истории
Sum_Loss = 0 ; // суммарный убыток по этим итерациямdatetime
Time_at_History_Current = 0 ,
Time_at_History_Previos = 0 ;
if ( OrdersHistoryTotal () != 0 )
{
for ( int counter = OrdersHistoryTotal ()- 1 ; counter >= 0 ; counter--)
{
OrderSelect (counter, SELECT_BY_POS, MODE_HISTORY);
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
{
if ( OrderType () == OP_BUY || OrderType () == OP_SELL)
{
if ( OrderProfit () < 0 ) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера// для последующего его анализа при подсчете количества итераций
{
double lastLoss = OrderProfit ();
Sum_Loss=Sum_Loss+lastLoss; // считаем общий убыток по закрытым подряд убыточным ордерам
Time_at_History_Current = OrderCloseTime ();
}
//Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));//Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));if (Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
{
Time_at_History_Previos = Time_at_History_Current ;
Iteration++;
//Print("Iteration at History в условии сравнения = ", Iteration);
}
else// они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
{
if ( OrderProfit () >= 0 )
break ;
}
}
}
}
}
if (Sum_Loss < 0.0 ) { // Имеем убыток по закрытым позамdouble money = Lots;
BuyLots = GetBuyLotsSum();
SellLots = GetSellLotsSum();
if (BuyLots > SellLots)money = BuyLots * 10 ;
if (BuyLots < SellLots)money = SellLots * 10 ;
if ((( AccountEquity () + Sum_Loss + (Sum_Loss / money)) >= AccountBalance ()) && (((totalSell > 0 ) && (totalBuy < 1 )) || ((totalSell < 1 ) && (totalBuy > 0 )))) { // Достигли безубытка// Здесь какой-то код, который необходимо выполнить при достижении безубытка
CloseAllBuy();
CloseAllSell();
Sum_Loss = 0.0 ;
거래가 음수에서 마감되었을 때 사이클이 열리고 다음 주문이 0보다 크거나, 즉 양수 잔액이지만 음수보다 작으면 다음 주문이 닫히도록 아무 것도 할 수 없습니다. 더하기 음수, 우리는 이미 더 작은 새로운 음수 값을 얻습니다.
if ( OrderProfit () >= 0 && Sum_Loss < 0.0 )
double lastLoss_two = OrderProfit ();
Sum_Loss=Sum_Loss+lastLoss_two; // считаем общий убыток по закрытым подряд убыточным ордерам
Time_at_History_Current = OrderCloseTime ();
}
신호에서 음수보다 크면 주문을 닫고 처음부터 사이클을 시작합니다.
상황은 이 코드가 손실로 거래를 마감할 때 마이너스 잔액을 기억하고 플러스로 거래를 마감할 때 플러스가 잔액보다 작을 때 Sum_Loss를 재설정하고 필요한 재설정하는 것이 아니라 깎는 것입니다.
즉, 이제 다음과 같이 작동합니다.
마감된 주문을 확인하고, 마감된 주문의 이익이 0보다 작으면 이 이익이 Sum_Loss에 추가되고, 미결 거래의 이익이 Sum_Loss를 초과할 때까지 계속됩니다. 닫히고 Sum_Loss가 0으로 재설정되고 주기가 다시 시작됩니다.
그리고 나는 필요합니다:
빨간색으로 마감된 주문은 음수 이익이 Sum_Loss에 추가되었습니다. 다음 거래가 양수 이익으로 마감되면 Sum_Loss 금액을 수익성 있는 이익에서 받은 금액만큼 줄입니다. 더 적은 양으로 주문의 이익이 Sum_Loss보다 클 때까지 계속해서 Sum_Loss를 재설정하고 새로운 주기를 시작합니다.
EA 코드의 작업은 .scv 파일에서 데이터를 읽고(한 줄에 두 개의 값, 400줄) 배열에 쓰는 것입니다.
double signals_array[ 400 ][ 2 ];
int init()
{
int Handle;
Handle= FileOpen ( "Signals.csv" , FILE_CSV | FILE_READ , ";" ); // Открытие файлаif (Handle< 0 ) // Неудача при открытии файла
{
if ( GetLastError ()== 4103 ) // Если файла не существует,..Alert ( "Нет файла" ); //.. извещаем трейдера else// При любой другой ошибке..Alert ( "Ошибка при открытии файла" ); //..такое сообщPlaySound ( "Bzrrr.wav" ); // Звуковое сопровождениеreturn ; // Выход из start()
}
for ( int i = 0 ; i < 400 ; i++)
{
for ( int j = 0 ; j < 2 ; j++)
signals_array[i][j] = StrToDouble ( FileReadString (Handle));
}
Alert (signals_array[ 120 ][ 0 ], "; " ,signals_array[ 0 ][ 1 ], " OK!" );
//----return ( 0 );
}
문제는 차트에 Expert Advisor를 던지면 어레이의 올바른 값으로 경고를 표시하지만 Expert Advisor를 테스트하려고 하면 로그에 "파일 없음" 경고가 표시된다는 것입니다. . 즉, 파일에 액세스할 수 없는 것처럼 보이고(믿을 수 없지만) 배열에 값을 쓰지만(또 다른 경고로 확인됨) 통나무. 혼란스러운. 아래 스크린샷.
문제는 차트에 Expert Advisor를 던지면 어레이의 올바른 값으로 경고를 표시하지만 Expert Advisor를 테스트하려고 하면 로그에 "파일 없음" 경고가 표시된다는 것입니다. . 즉, 파일에 액세스할 수 없는 것 같고(믿을 수 없지만) 배열에 값을 쓰지만(다른 경고로 확인됨) 로그에 따라 파일을 찾는 데 멈춥니다. . 혼란스러운.
EA 코드의 작업은 .scv 파일에서 데이터를 읽고(한 줄에 두 개의 값, 400줄) 배열에 쓰는 것입니다.
문제는 차트에 Expert Advisor를 던지면 어레이의 올바른 값으로 경고를 표시하지만 Expert Advisor를 테스트하려고 하면 로그에 "파일 없음" 경고가 표시된다는 것입니다. . 즉, 파일에 액세스할 수 없는 것처럼 보이고(믿을 수 없지만) 배열에 값을 쓰지만(또 다른 경고로 확인됨) 통나무. 혼란스러운. 아래 스크린샷.
파일이 열려 있으면 작업하는 동안 오류가 수신되더라도 파일을 닫아야 합니다. 지금까지 나는 어떤 오류도 보지 못했습니다.
안녕하세요. 표준 SendMail 함수 에 대한 질문 ... 함수가 어떻게 작동하는지 이해하기 위해 다음 스크립트를 작성했습니다.
클라이언트 터미널 창에서 시작하면 로그에 오류가 나타납니다.
동시에 설정(클라이언트 터미널 서비스 메뉴 -> 설정 -> 메일 탭)에서 다음 매개변수가 설정됩니다.
SMTP 필드의 점 세 개 대신에 로그인이 있고 From은 메시지를 보내려는 사서함의 이름이며 To 필드는 메시지를 보낼 사서함의 이름입니다.
이 경우 SMTP 서버 필드 에 지정된 포트 번호 정말 25:
참고: 스크린샷은 메일 서버의 도움말에서 찍은 것입니다. 루 .
질문 : 이 오류는 무엇이며 어떻게 제거합니까? 컴파일러는 오류를 감지하지 않으며 GetLastError () 함수는 값 0을 반환합니다.
피. _ 에스 _ 포럼을 어지럽히지 않기 위해 답변에 미리 감사드립니다.
안녕하세요. 표준 SendMail 함수 에 대한 질문 ... 함수가 어떻게 작동하는지 이해하기 위해 다음 스크립트를 작성했습니다.
클라이언트 터미널 창에서 시작하면 로그에 오류가 나타납니다.
동시에 설정(클라이언트 터미널 서비스 메뉴 -> 설정 -> 메일 탭)에서 다음 매개변수가 설정됩니다.
SMTP 필드의 점 세 개 대신에 로그인이 있고 From은 메시지를 보내려는 사서함의 이름이며 To 필드는 메시지를 보낼 사서함의 이름입니다.
이 경우 SMTP 서버 필드 에 지정된 포트 번호 정말 25:
참고: 스크린샷은 메일 서버의 도움말에서 찍은 것입니다. 루 .
질문 : 이 오류는 무엇이며 어떻게 제거합니까? 컴파일러는 오류를 감지하지 않으며 GetLastError () 함수는 값 0을 반환합니다.
피. _ 에스 _ 포럼을 어지럽히지 않기 위해 답변에 미리 감사드립니다.
도와주세요.
여기 코드가 있습니다
거래가 음수에서 마감되었을 때 사이클이 열리고 다음 주문이 0보다 크거나, 즉 양수 잔액이지만 음수보다 작으면 다음 주문이 닫히도록 아무 것도 할 수 없습니다. 더하기 음수, 우리는 이미 더 작은 새로운 음수 값을 얻습니다.
신호에서 음수보다 크면 주문을 닫고 처음부터 사이클을 시작합니다.
상황은 이 코드가 손실로 거래를 마감할 때 마이너스 잔액을 기억하고 플러스로 거래를 마감할 때 플러스가 잔액보다 작을 때 Sum_Loss를 재설정하고 필요한 재설정하는 것이 아니라 깎는 것입니다.
즉, 이제 다음과 같이 작동합니다.
마감된 주문을 확인하고, 마감된 주문의 이익이 0보다 작으면 이 이익이 Sum_Loss에 추가되고, 미결 거래의 이익이 Sum_Loss를 초과할 때까지 계속됩니다. 닫히고 Sum_Loss가 0으로 재설정되고 주기가 다시 시작됩니다.
그리고 나는 필요합니다:
빨간색으로 마감된 주문은 음수 이익이 Sum_Loss에 추가되었습니다. 다음 거래가 양수 이익으로 마감되면 Sum_Loss 금액을 수익성 있는 이익에서 받은 금액만큼 줄입니다. 더 적은 양으로 주문의 이익이 Sum_Loss보다 클 때까지 계속해서 Sum_Loss를 재설정하고 새로운 주기를 시작합니다.
합계 손실 = 0;
첫 번째 청산 주문: 이익 (-50) < 0
Sum_Loss + 이익 (Sum_Loss + (-50))
Sum_Loss = -50;
두 번째 청산 주문: 이익(+40) > 0 및 Sum_Loss < 0
Sum_Loss + 이익 (Sum_Loss + 40)
합계_손실 = -10안녕하세요. 표준 SendMail 함수 에 대한 질문 ... 함수가 어떻게 작동하는지 이해하기 위해 다음 스크립트를 작성했습니다.
클라이언트 터미널 창에서 시작하면 로그에 오류가 나타납니다.
동시에 설정(클라이언트 터미널 서비스 메뉴 -> 설정 -> 메일 탭)에서 다음 매개변수가 설정됩니다.
SMTP 필드의 점 세 개 대신에 로그인이 있고 From은 메시지를 보내려는 사서함의 이름이며 To 필드는 메시지를 보낼 사서함의 이름입니다.
이 경우 SMTP 서버 필드 에 지정된 포트 번호 정말 25:
참고: 스크린샷은 메일 서버의 도움말에서 찍은 것입니다. 루 .
질문 : 이 오류는 무엇이며 어떻게 제거합니까? 컴파일러는 오류를 감지하지 않으며 GetLastError () 함수는 값 0을 반환합니다.
피. _ 에스 _ 포럼을 어지럽히지 않기 위해 답변에 미리 감사드립니다.
돕다
서버 smtp.mail.ru:25가 실제로 작동합니다.
돕다
서버 smtp.mail.ru:25가 실제로 작동합니다.
테스트에 대한 로그인이 있습니다. 누구와 일치하는지
방화벽이 간섭하고 있는 것은 아닐까?
백만에 대한 오 빌어먹을 조언 - 터미널에 과부하가 걸립니다!
좋은 사람들을 도와주세요
나는 x의 가격에 보류 주문 을 넣습니다. 주문은 가격 Y의 시장 주문으로 변환됩니다. 보류 중인 주문이 어느 가격에 배치되었는지 어딘가에서 찾을 수 있습니까(로그에서 ...거기 또는 ) 아니면 고유한 배열을 작성해야 할 것입니다
좋은 저녁이에요!
오류의 가능한 원인을 제안하십시오. 나는 단지 언어에 빠져들고 있어서 조금 막혔습니다.
EA 코드의 작업은 .scv 파일에서 데이터를 읽고(한 줄에 두 개의 값, 400줄) 배열에 쓰는 것입니다.
문제는 차트에 Expert Advisor를 던지면 어레이의 올바른 값으로 경고를 표시하지만 Expert Advisor를 테스트하려고 하면 로그에 "파일 없음" 경고가 표시된다는 것입니다. . 즉, 파일에 액세스할 수 없는 것처럼 보이고(믿을 수 없지만) 배열에 값을 쓰지만(또 다른 경고로 확인됨) 통나무. 혼란스러운. 아래 스크린샷.
alexeymosc :
문제는 차트에 Expert Advisor를 던지면 어레이의 올바른 값으로 경고를 표시하지만 Expert Advisor를 테스트하려고 하면 로그에 "파일 없음" 경고가 표시된다는 것입니다. . 즉, 파일에 액세스할 수 없는 것 같고(믿을 수 없지만) 배열에 값을 쓰지만(다른 경고로 확인됨) 로그에 따라 파일을 찾는 데 멈춥니다. . 혼란스러운.
테스터와 차트에서 파일은 다른 디렉토리에서 작성되고 읽힙니다.
좋은 저녁이에요!
오류의 가능한 원인을 제안하십시오. 나는 단지 언어에 빠져들고 있어서 조금 막혔습니다.
EA 코드의 작업은 .scv 파일에서 데이터를 읽고(한 줄에 두 개의 값, 400줄) 배열에 쓰는 것입니다.
문제는 차트에 Expert Advisor를 던지면 어레이의 올바른 값으로 경고를 표시하지만 Expert Advisor를 테스트하려고 하면 로그에 "파일 없음" 경고가 표시된다는 것입니다. . 즉, 파일에 액세스할 수 없는 것처럼 보이고(믿을 수 없지만) 배열에 값을 쓰지만(또 다른 경고로 확인됨) 통나무. 혼란스러운. 아래 스크린샷.
파일이 열려 있으면 작업하는 동안 오류가 수신되더라도 파일을 닫아야 합니다. 지금까지 나는 어떤 오류도 보지 못했습니다.
다음과 같이 읽을 수 있습니다.
signals_array[i][j] = FileReadDouble (Handle);