포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 237

 

안녕하세요 프로그래머 여러분.

교과서에 오르기에는 너무 게으르다. 아마도 누군가가 0.1 단계가 아니라 0.01 단계로 자금 관리를 적용하기 위해 고문에서 변경해야 할 사항을 알고 있을 수 있습니다.

파일:
 
SteelKnight84 :

안녕하세요 프로그래머 여러분.

교과서에 오르기에는 너무 게으르다. 아마도 누군가가 0.1 단계가 아니라 0.01 단계로 자금 관리를 적용하기 위해 고문에서 변경해야 할 사항을 알고 있을 수 있습니다.


모두 게으르다
 
Vinin :

모두 게으르다

언어를 알고 있는 프로그래머가 프로그램을 여는 데 너무 게으른 경우가 한 가지 있습니다. 또 다른 문제는 언어를 모르는 사람이 본질적으로 간단한 질문에 대답하기 위해 언어를 배우는 데 너무 게으른 경우입니다. 프로그래머에게 언어에 대한 지식이 필요하다면 나에게 그 언어에 뛰어드는 것은 의미가 없습니다. :) 그게 전부입니다. 그러나 물론 아무도 대답하지 않으면 대답해야 합니다. 하지만 여기서 프로그래머만 소통한다면 포럼의 요점은 무엇입니까?
 
SteelKnight84 :

언어를 알고 있는 프로그래머가 프로그램을 여는 데 너무 게으른 경우가 한 가지 있습니다. 또 다른 문제는 언어를 모르는 사람이 본질적으로 간단한 질문에 대답하기 위해 언어를 배우는 데 너무 게으른 경우입니다. 프로그래머에게 언어에 대한 지식이 필요하다면 나에게 그 언어에 뛰어드는 것은 의미가 없습니다. :) 그게 전부입니다. 그러나 물론 아무도 대답하지 않으면 대답해야 합니다. 하지만 여기서 프로그래머만 소통한다면 포럼의 요점은 무엇입니까?

요점이 없다면 - 질문하지 말고 바로 여기에서
 
Vinin :

요점이 없다면 - 질문하지 말고 바로 여기에서

그리고 그 덕분에
 
SteelKnight84 :

안녕하세요 프로그래머 여러분.

교과서에 오르기에는 너무 게으르다. 아마도 누군가가 0.1 단계가 아니라 0.01 단계로 자금 관리를 적용하기 위해 고문에서 변경해야 할 사항을 알고 있을 수 있습니다.


2자리가 변경되면 정상적으로 보이거나 작동합니다.

파일:
 

전체 포럼을 읽은 것으로 표시할 수 있습니까?

그리고 MQL5 포럼도...

감사해요

 
ALXIMIKS :


2자리가 변경되면 정상적으로 보이거나 작동합니다.


누군가 게으르지 않은 것으로 나타났습니다. 제가 실수를
 

여보세요!!! 좋은 조언을 해주신 모든 분들께 감사드립니다. 그러나 나는 여전히 내가 시작한 것에서 앞으로 나아갈 수 없었습니다)) 나의 고문은 두 개의 동일한 주문을 열고 나머지는 무브먼트에 반대합니다. 무브먼트에서 열리도록 변경하고 싶습니다!!! 모든 옵션을 시도했습니다.

누가 할 수 있는지 알려주세요

문자열 GLOB_START;

정수 초기화()
{
GLOB_START = "@" + DoubleToStr(ID,0) + "@" + "_start";
if ( !GlobalVariableCheck( GLOB_START ) )GlobalVariableSet(GLOB_START,TimeCurrent());
리턴(0);
}

정수 초기화()
{
스위치( 초기화되지 않은 이유() )
{
사례 REASON_REMOVE: delete_glob ( "@" + DoubleToStr(ID,0) + "@" );
}
if ( IsTesting() )delete_glob ( "@" + DoubleToStr(ID,0) + "@" );
리턴(0);
}

무효 delete_glob (문자열 c)
{
정수 나;
for ( i = GlobalVariablesTotal()-1; i>= 0 ; i-- )if ( StringFind(GlobalVariableName(i),c) >= 0 )GlobalVariableDel(GlobalVariableName(i));
}

정수 시작()
{
주석(정보());
int KOL_BUY = order_total(0);
int KOL_SELL = order_total(1);
더블 엘;

if ( order_total() == 0 )
{
오픈(0,랏,0,TP);
오픈(1,랏,0,TP);
}

if ( KOL_BUY == 0 && KOL_SELL != 0 )
{
오픈(0,랏,0,TP);
내가 = last_trade(1);
오픈(1,1,0,0);
수정 주문(1);
}

if ( KOL_BUY != 0 && KOL_SELL == 0 )
{
오픈(1,랏,0,TP);
내가 = last_trade(0);
오픈(0,1,0,0);
수정 주문(0);
}

리턴(0);
}

문자열 정보()
{
정수 나;
이중 버프_1 = 0, 버프_2 = 0, 버프_3 = 0;
문자열 res = "\n";

for( i = OrdersHistoryTotal() - 1, i >= 0, i--)
{
주문 선택(i,SELECT_BY_POS,MODE_HISTORY);
if( OrderMagicNumber() == ID )
{
if ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,0) )buff_1 += OrderProfit();
if ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,1) && OrderOpenTime() < iTime(NULL,PERIOD_D1,0) )buff_2 += OrderProfit();
if ( OrderOpenTime() >= GlobalVariableGet(GLOB_START) )buff_3 += OrderProfit();
}
}

res = res + "예금 통화의 이익 " + TimeToStr(iTime(NULL,PERIOD_D1,0)) + ": " + DoubleToStr(buff_1,0) + "\n" + "\n";
res = res + "예금 통화의 이익 " + TimeToStr(iTime(NULL,PERIOD_D1,1)) + ": " + DoubleToStr(buff_2,0) + "\n" + "\n";
res = res + "예금 통화 총 이익: "+ DoubleToStr(buff_3,0) + "\n";
반환(res);
}

무효 modify_orders( 정수 유형 )
{
정수 나;
datetime time_last = 0, time_first = TimeCurrent();
이중 SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*MarketInfo(Symbol(),MODE_POINT), op_pr_last, op_pr_first, 레벨;

for( i = OrdersTotal() - 1, i >= 0, i-- )
{
주문 선택(i,SELECT_BY_POS,MODE_TRADES);
if( OrderMagicNumber() == ID && OrderType() == 유형)
{
if ( OrderOpenTime() > time_last )
{
op_pr_last = OrderOpenPrice();
time_last = OrderOpenTime();
}
if ( OrderOpenTime() < time_first )
{
op_pr_first = OrderOpenPrice();
time_first = OrderOpenTime();
}
}
}


if ( 유형 == 0 ) 레벨 = op_pr_last + MathAbs(op_pr_last-op_pr_first) * (SL/100);
if ( 유형 == 1 ) 레벨 = op_pr_last - MathAbs(op_pr_last-op_pr_first) * (SL/100);

for( i = OrdersTotal() - 1, i >= 0, i -- )
{
주문 선택(i,SELECT_BY_POS,MODE_TRADES);
if( OrderMagicNumber() == ID && OrderType() == 유형 && NormalizeDouble(OrderTakeProfit(),Digits) != NormalizeDouble(level,Digits) )OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),level,0 );
}
}

이중 last_trade( int t )
{
정수 나;
이중 해상도 = -1;
날짜 시간 = 0;

for(i=OrdersTotal()-1;i>=0;i--)
{
주문 선택(i,SELECT_BY_POS,MODE_TRADES);
if(OrderOpenTime()>time && OrderMagicNumber()==ID && OrderType() == t)
{
res = OrderLots();
시간 = OrderOpenTime();
}
}
if (승수)return(res * Lot_koeff);
if ( !multiplier )return(res + Lot_koeff);
}
int open(int 유형, 이중 l, 이중 sl=0, 이중 tp=0, 문자열 통신 = "")
{
int isOpened = 0, 시도 = 0;
더블 s,t;
동안 ( IsTradeContextBusy() ){Sleep(500);}
새로 고침();
if ( sl != 0 && sl < MarketInfo(Symbol(),MODE_STOPLEVEL) )sl = MarketInfo(Symbol(),MODE_STOPLEVEL);
if ( tp != 0 && tp < MarketInfo(Symbol(),MODE_STOPLEVEL) )tp = MarketInfo(Symbol(),MODE_STOPLEVEL);
if ( 유형 == 0 )
{
if (tp == 0)t = 0;
if ( tp != 0 )t = 질문 + tp * 포인트;
if ( sl == 0 )s = 0;
if ( sl != 0 )s = 입찰가 - sl * 포인트;
}
if ( 유형 == 1 )
{
if (tp == 0)t = 0;
if ( tp != 0 )t = 입찰가 - tp * 포인트;
if ( sl == 0 )s = 0;
if ( sl != 0 )s = 묻다 + sl * 포인트;
}
s = NormalizeDouble(s, 자릿수);
t = NormalizeDouble(t, 자릿수);
if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID);
if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID);
수면(500);
동안(isOpened<0)
{
동안 ( IsTradeContextBusy() ){Sleep(500);}
새로 고침();
if ( 유형 == 0 )
{
if (tp == 0)t = 0;
if ( tp != 0 )t = 입찰가 + tp * 포인트;
if ( sl == 0 )s = 0;
if ( sl != 0 )s = 입찰가 - sl * 포인트;
}
if ( 유형 == 1 )
{
if (tp == 0)t = 0;
if ( tp != 0 )t = 질문 - tp * 포인트;
if ( sl == 0 )s = 0;
if ( sl != 0 )s = 묻다 + sl * 포인트;
}
s = NormalizeDouble(s, 자릿수);
t = NormalizeDouble(t, 자릿수);
시도++;
if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID);
if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID);
if(시도 > 5) 중단;
if(isOpened>=0) break;
수면(500);
}
if(isOpened<0) Alert("주문이 열리지 않았습니다. 오류:", GetLastError());
반환(isOpened);
}

int order_total( int type_1 = -1, int type_2 = -1 )
{
정수 나;
intcol=0;
for(i=OrdersTotal()-1;i>=0;i--)
{
주문 선택(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==ID && (OrderType() == type_1 || OrderType() == type_2) )kol++;
if(OrderMagicNumber()==ID && type_1 == -1 && type_2 == -1 )kol++;
}
반환(열);
}

이중 check_lot(이중 &lo)
{
더블 l = MarketInfo(Symbol(),MODE_LOTSTEP);
정수 확인 = 0;
동안 ( l < 1 ){l*=10;ok++;}
if( lo < MarketInfo(Symbol(),MODE_MINLOT) )lo = MarketInfo(Symbol(),MODE_MINLOT);
if( lo > MarketInfo(Symbol(),MODE_MAXLOT) )lo = MarketInfo(Symbol(),MODE_MAXLOT);
return(NormalizeDouble(lo,ok));

 

그런 말을 하세요. 특정 조건 에서 동시에 주문을 모두 열 수 있는 N명의 고문이 계정에 있습니다. 각 고문은 계정에서 1개 이하의 주문을 확인하지만 결국에는 N 주문, 무엇을 할 수 있습니까?