기고글 토론 "MQL4 및 MQL5 개발 프레임워크 내 OpenAI의 ChatGPT 기능" - 페이지 2

 
Valeriy Yastremskiy #:
경험 공유의 일환으로) µl이 gpt 언어를 잘 모른다는 사실 때문에 작업이 복잡해집니다. 때로는 오류 없이 코드를 얻는 것이 매우 어렵습니다.
ChatGPT 3.5는 일반적으로 MQL4/5로 작성되므로 아이디어를 얻지 마세요. 이 글의 가치는 프롬프트에 있고 ChatGPT로 개발하는 과정을 보여줘야 하는데, 그런 것이 전혀 없습니다. 아무도 무료로 관심이없는 기성품 생성 코드 만 있습니다. 기사의 가치는 0이고 저자는 "D"를 받고 어떻게이 조잡한 작품이 출판 될 수 있었는지 궁금합니다.
 
Alexey Volchanskiy #:
ChatGPT 3.5는 MQL4/5에서 정상적으로 작성되니 너무 대수롭지 않게 생각하지 마세요. 이 글의 가치는 ChatGPT를 사용한 개발 과정을 보여주는 프롬프트에 있어야 하는데, 그런 것이 전혀 없습니다. 아무도 관심이 없는 기성품 생성 코드만 무료로 제공합니다. 기사의 가치는 0이고 저자는 "D"를 받고이 조잡한 작품이 어떻게 출판 될 수 있었는지 궁금합니다 .

탱크에있는 분들을 위해 다시 말씀 드리지만이 기사의 요점은 프롬프트를 제공하는 것이 아니라 직접 제작해야한다는 생각을 심어주는 것입니다. 제가 한 모든 것을 버리면 기사에 어떤 일이 벌어질지 모를 겁니다. 사람들을 혼란스럽게 할 불필요한 군더더기가 너무 많아요. 자료는 간단하고 명확해야 합니다. 그리고 저한테 D를 주려고 시험을 보는 게 아니잖아요. 조심하세요.

 
Alexey Volchanskiy #:
ChatGPT 3.5는 MQL4/5에서 정상적으로 작성되니 너무 대수롭지 않게 생각하지 마세요. 이 글의 가치는 ChatGPT를 사용한 개발 과정을 보여주는 프롬프트에 있어야 하는데, 그런 것이 전혀 없습니다. 아무도 관심이 없는 기성품 코드만 무료로 제공합니다. 기사의 가치는 0이고 저자는 "D"를 받고이 해킹 작업이 어떻게 게시 될 수 있었는지 궁금합니다 .

시장가 주문을 위한 코드를 얻지 못했습니다. 프롬프트할 수 있다면. 매번 티켓을 반환했습니다.

 
Valeriy Yastremskiy #:

시장가 주문을 하기 위한 코드를 받을 수 없습니다. 프롬프트할 수 있다면. 매번 티켓을 반환했습니다.

MQL5에서 시장가 주문을 여는 프로시저를 작성하세요. 이 함수는 다음 입력 데이터를 받아들여야 합니다:


1) 랏

2) 시가와 종가 간 가격 차이의 모듈로 이익실현(Take Profit)

3) 시가와 종가 간 가격 차이의 모듈로 스톱로스(손절가)

4) 주문 방향 (bool bDirection) 참 - 매수, 거짓 - 매도

5) 슬리피지(핍 단위) (시초가와의 최대 편차, 핍 단위)

6) 매직 주문 번호


또한 스톱로스 또는 테이크프로핏이 0인 경우 해당 스톱로스 또는 테이크프로핏 중 하나만 설정하고 주문이 개시되어야 하며, 스톱로스와 테이크프로핏이 모두 0인 경우 스톱로스와 테이크프로핏 없이 주문이 개시되어야 합니다.


또한 최소 및 최대 허용 랏을 확인하고 랏이 허용 범위를 벗어난 경우 가능한 가장 가까운 숫자(최소 또는 최대)로 가져와야 합니다.


많은 설명을 제공하고 코드를 짧게 만들되, 매수 주문과 매도 주문에 대해 손절가와 이익실현가가 다르게 계산된다는 점을 잊지 마세요.


라이브러리는 사용할 수 없고 MQL5 언어 기능만 사용할 수 있습니다.

// 보정된 볼륨을 얻기 위한 함수
double CorrectedVolume(double volume)
{
   double minVol = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   double maxVol = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
   double VolStep = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
   
   // 볼륨이 최소 볼륨보다 작으면 최소 볼륨을 설정합니다.
   if(volume < minVol)
       return minVol;
   // 볼륨이 최대 볼륨보다 큰 경우 최대 볼륨을 설정합니다.
   else if(volume > maxVol)
       return maxVol;
   
   // 볼륨을 볼륨 단계의 배수로 변환합니다.
   return (double)((int)(volume / VolStep)) * VolStep; 
}

// 주문 배치의 기본 기능
bool OpenOrder(double volume, double stoploss, double takeprofit, bool bDirection, int slip, int magic)
{
   MqlTick last_tick;
   SymbolInfoTick(_Symbol,last_tick);
   
   // 주문 개시 가격 결정 
   double open_price = bDirection ? last_tick.ask : last_tick.bid;
   // 항목의 값을 결정합니다. 
   double point = SymbolInfoPoint(_Symbol);
   
   // 방향에 따라 SL 및 TP 조정
   double corrected_sl = bDirection ? open_price - stoploss * point : open_price + stoploss * point;
   double corrected_tp = bDirection ? open_price + takeprofit * point : open_price - takeprofit * point;
   
   // SL 또는 TP = 0이면 SL 또는 TP 없이 주문이 개설됩니다.
   if (stoploss == 0) corrected_sl = 0; 
   if (takeprofit == 0) corrected_tp = 0;
   
   // 사용된 트랜잭션 유형
   ENUM_ORDER_TYPE order_type = bDirection ? ORDER_TYPE_BUY : ORDER_TYPE_SELL;
   
   // 요청 매개변수 입력 구조
   MqlTradeRequest request;
   request.type = order_type;
   request.symbol = _Symbol;
   request.volume = CorrectedVolume(volume);
   request.price = open_price;
   request.sl = corrected_sl;
   request.tp = corrected_tp;
   request.deviation = slip;
   request.magic = magic;
   request.type_filling = ORDER_FILLING_FOK;
   request.type_time = ORDER_TIME_DAY;
   
   MqlTradeResult result;
   return OrderSend(request,result); // 거래소로 주문 보내기
}

바로 작동하지 않아서 프롬프트를 더 자세하게 만들어야 했습니다. 5분밖에 걸리지 않았습니다. 그리고 프롬프트를 찾지 않고 원하는 내용과 방법을 작성했습니다. 프롬프트는 전혀 문제가 되지 않습니다....

 
'고객'이 생성된 소스에서 오류를 찾아야 하기 때문에, 즉 실제로 정답을 알고 있거나 대부분을 작성해야 하기 때문에 현재의 GPT 기술로는 이 모든 것이 무의미합니다. 현재의 GPT는 수다쟁이입니다.
 
Stanislav Korotky #:
'고객'이 생성된 소스에서 오류를 찾아야 하기 때문에, 즉 실제로 정답을 알고 있거나 대부분을 작성해야 하기 때문에 현재의 GPT 기술로는 이 모든 것이 무의미합니다. 현재의 GPT는 수다쟁이입니다.

실제로 당신은 내가 말한 것과 똑같습니다. 실제로 언어를 모르고 그가주는 것을 수정하는 것은 쓸모가 없으며 기사에서 설명하려고했지만 사람들에게는별로 보이지 않습니다). 그들은 나에게 프롬프트를주고 싶어하고 그게 다이고 나는 초콜릿에 있습니다 ))))) 그리고 당신이 그것에 대해 생각해야한다는 사실, GPT가 거기에 있습니다 ))))

 
기사를 작성해 주신 유진님께 감사드립니다! 나는 또한 CHATGPT 및 기타 AI를 실험했습니다. 예, 때로는 좋은 텍스트가 나오고 어떤 스타일로든시를 쓸 수도 있지만 프로그래밍에서는 실수가 많아서 확인하고 편집하지 않고는 아무것도 할 수 없습니다.
Promtov에 대해 동의합니다. AI에 동일한 요청을해도 다른 텍스트 나 코드를 생성합니다. 그렇기 때문에 어린 아이처럼 의사 소통하고 원하는 것을 철저히 설명해야합니다. 유일한 것은 경험과 경력이 있고 수학적 교육을 받았으며 적절한 사고방식을 갖춘 프로그래머라면 ToR과 같이 AI에 대한 작업을 더 명확하고 간략하게 공식화할 수 있다는 것입니다. 많은 트레이더가 간단한 전문가 조언을 작성하기 위한 기초적인 TOR을 구성하지 못합니다. MQL4에서 첫 번째 Expert Advisor를 작성하기 시작했을 때, 대학에서 포트란으로 미래 프로그램의 알고리즘을 먼저 그린 다음 그에 따라 코드를 작성하도록 배웠던 것이 많은 도움이 되었습니다. 또한 미래의 무선 전자 시스템 설계 엔지니어로서 TOR을 작성하는 법을 배웠는데, 이 역시 유용했습니다.
 
Evgeniy Ilin #:

얼굴이 파랗게 될 때까지 막대를 저장해야하고 지금 여기에서 거래해야하기 때문에 시작 EMA 계산이 후속 계산과 동일하지 않다는 사실을 고려하는 것이 좋습니다. 주기에 관해서는 모든 것이 막대별로 작동하며 눈에 띄는 속도 저하를 느끼지 못했습니다. 이 지표에 대해 원하는대로 계산을 완료 할 수 있지만 많은 것을 줄 수 있습니까 ) 나는 단지 아무것도 없다는 것을 알고 있습니다 ).

모든 후속 계산을 이전 계산과 동일하게 만드는 것이 EMA 작성자의 임무입니다. 얼굴이 파랗게 될 때까지 막대를 저장할 필요는 없지만 위에서 썼 듯이 기간보다 10-20 배 더 많은 막대 만 있으면됩니다.

주기에 대해서는 매우 설득력이 있습니다 ... 물론 10 바의 사이클과 100 바의 사이클 사이에는 전혀 차이가 없습니다... 특히 평균을 계산하는 빠른 알고리즘의 존재를 고려한다면 더욱 그렇습니다.

 
Evgeniy Ilin #:

처음에는 몰랐어요)

   MqlTick last_tick;
   SymbolInfoTick(_Symbol,last_tick);
   
   
   // 항목의 값을 결정합니다. 
   double point = SymbolInfoPoint(_Symbol); // видимо по аналогии придумано)))
   
   
 
Valeriy Yastremskiy #:

처음에는 몰랐어요)

SymbolInfoDouble(_Symbol,SYMBOL_POINT) - 이렇게 해야 합니다. 일반적으로, 당신은 이해했습니다 ... 대부분의 오류를 수정했습니다. 내 ts의 코드였다면 모든 것을 보았을 것입니다. 결함이 있습니다... 그리고 당신이 무엇을하고 있는지 모른다면 그것은 쓸모가 없습니다. 옳은 방향으로 가고 있어요. 그는 종종 틀렸어요. 제가 그 기사를 쓴 이유가 있어요. 실수하지 않고 모든 것을 완벽하게 알려줄 수 있지만, 그것은 모두 과시용이기 때문에 쓸모가 없습니다. 실제 현장에서는 간단한 인간적인 질문을 하는데, 가장 좋은 경우에는 더 구체적일 수 있지만 실제로는 사후 처리를 크게 줄이지 못합니다.