0111000101110011011111100111101010110110000111011011110110111011110000010100001101000110001100011010001100001000111000101011111100110110100001001001011111100011110100111100100101001111100011100110110111011011111110101111101011110100001111111010110100010010000100101110011101001111001110000101110110001010101010010011011010000111010011010110011100011100011101000101110100010011101000000000100010000000 0001111010001001001110100101000100011011110100101001101001111010111010100001110100111111010001110001011100110101001001011011010000100101000010001000001001011000010101000111100101110001111100010011101000000001011100010001100110010000010111110100010011001100100011110101011011101111101010101000000100001011010010000011010110001000000010110111011001010001100001001010111001001011100100010010100101001111 1010010111000111000011101110100110100010001110010000101110100000010001010000111010011110101001111110100011000110101111100001111001111000010100000001100010001010001111000000101001000101110000001100001000001100111011001011101100111110001100100000010101100010101000011011010001000000011101110011110111110100000110010000011101101000001010111100000111111111011101110101100000110101010101100001100001001111 0010010111011110101110011101110110101111111100011010100011100010010100000001010010101000101100010001011011001111011010100110000110110001101111100110111100011110001011101001100110100010111000101101001011110111000001100101000110011011110110000111101101101001000101010100100111100111011010100100101110011100000001110010111000101001011000111010111110110010011010100110001111101111100100111000001100100001 1000101110001101011111111010100010101010111011101000100110010000010101110010101110001100100111100010001100001101101011101100110010101001001110100100000011001011001100000000000101111011011000110101000001001011000010011110100100001111101011101101011110100001011101101011001010101000011001001000001010100010111010010000101101010011111001011010000010001000011111000010011110001000011000100100001001000000 0110011111111100101000000100101000101011011011101110111110011101001111010101111001000110001011010011111101101011110110010011011001100101101111011011011111111011101011100100101110001000100001001111101011111001001100111011100011111000101100011000110011001110100010100111011001100111000111011110100010001000001000110010100010101100010010010101101001111111110001110111000110111101111111011101110010010111 0100101101011000111100110010010101010001010000100111000100010000001111110010010110110001011100011100110000111101111011000001101010001010010000011111000001001101110101111111000110111001111010000001101000101011110011000000100001100000100001111000110000000001011100111010110000000111111000001001011001101010110111110011100000101110100100100000101110011000011011011101010100000110111010100111010110010011 0011010101001001000000001010101101100010001011011000101000111110010101100000110001110101101100001010111010111000010010111011000101111010101000011101100110110001011100110001100001001001100011010011111000010001110000100010101000100010110010110110111100101010101100010100010011100111000010100101011111001001111001100110001100110010010011100111111000001001101000101111001111100101011011110001001111101001 0011101101101100000111010010011010011010111001011111000001101110101010110010111101101000101010001010000010100101010100010001000101110011101110010010011111001100001111100010101111001000000111100101100011111010000110001101101110001001101110110001011100111010101100010111110010110011000000000010010011000001110011010100001010100110100000000111100100000111001111000010011000100101100111011001111110101111 1100110010000001000011101000001011010010001101110000100100101011010110100001000010010001100001001110110111100001101000000110001011011001000100001100110101110111110100001110100010000110101010100010000010010000110011011000010101100110011001100110100011100001001100010110010000000111101110110010111101111010100000001010101000010010000011011001011110001001001011011111001110110110010100111110111011111100 0110110111001101000111000101110000101001001000111011110101011010101011110110001001111001001010100011111100001110111111100110101000111010011111001001010101001010111001011000010011000111110000011010101010101000100110011100000110010011111101111110010111000110100011110011011110000000001101100010110010110010110110100000011100101101010101000110111111011110011100101011101111001101011110100010010011110000 0000101001011001010110011111100111001010100100000101000010010111110000000101000101011001100001011100000111111111100001101011100100100111100011111111101000100000111010111000000001010110011010101001101111001010011000100011100011110010011101011010000001101000110100101010101100111011001010011100110000010100101100101001110111000000101101111010010001010000100000011111111001100111100111100000010111110010 1110000001010010011111110100110111011110101110110000001010100111100010111101101110011100010001001001111100110110001000101000001110000101001101101110111000000010110110111011101101010111011110010110010010111000001101010110110100010011110110011101111011111000001100001110111111100011100010110100011110011110100100010101100001110001000001100110111111111110001011000110110010100010101000001110111100101001 0001111110011101110101001000111110100011011000001000100101001111110111101111101000110000101101111011001001110111001110000000101000010011101001111001010100100010101010110001101011001010011010101001010000010001011100110011000110010101010011000101100111111110010101111101101111010010010100010001100000010001101000110011100101000010000001001001010001100100111010100010101010000011001111101011100110010101 0001111001110110100001001010011110111000010100000110011111101001110010101101111000010001101001000100110010001100111011101000011001111001101111100010111011010111101011110000010100110100011000111011000111100110101111101001100111010100011001011001000011011010110000010000000100000000110100100111000001011001010100110111010001000101100011000110100100001010101101001101101000110010011101101011100110010010 0111111011010110011010010111111010101000100000000010011010100110100001100001101101101111100001110101000000011110011000111111111000000111001111010110001100001011011101011011110100101011011001100110000010001111110101000000101011000101110100011010000110001001111101011010010010100000010101101110000001010101010110110100000001010001011010101010110001100011000100001100011010100011100011000101110001111111 1001110100000100100001101001000010111111110001101000111101010100011011101011101111101011000101010001001101111001010110101110100001100100110011011010011010011111111110110110111110000111110111010100001101000010010011010100110010000011110110010000110011000101111000100011100101101101000010101000000011001100000000101001001000101000111110111000110011111111110100111101000010011011011000010110001001001011 0100011011011111001111100110101111100001111110100100110111011111101001000100010010110101010100110011000111010101110001111101110001001101010100111011100001000100100110001010111011010001001010000000101110101101110001100111111011000001110100100001111010010111010010010010011010110100010000111110010001001001011111001001111100001010011010100010011011000111011010001101000011111000110110001011001011111111 0001101001010101001110101110100100111001111110101010001101111101001110011111011111100110101110100101011011000100000011110000001010111010011000011111010111100000100111010000000100111000110111111001000101011110111000110001010010100100011110010001101000111110111011111101001101010100000111101010101010001001010000101011001101101000111001110110101010100101010010100011000101000010010010000100011000101001 0100111100011010010110011010100000010110011110010000100001101101101111001101100101111000100101010001001010111111101010100111011110111010110101011111000011111000101010110010101110010001101010111001100010110010010001110000010000000011110111000110111011010001011101100101100000111111111011001000101010011011011110000001110100010101100110111011111110011101110000001101001111000010010111110110000001100100 0110110001001101100001101000100010001001000001000110011000111010110000110010010101010100011111010011101000111111100110011111111101101110111100011101011011100011101110101010001000111111000001000101011001100101101100111000110100001100110001100010101001001100000000101011110010110000101100000001110101000111110111011011100010000011100011011010001100001110101011011010001100010000111001110110101111111111 0110000000010111011010110000101110010111000110110001100110001010000000001001100110011111010001010000101010101111111010101011011010101100111010100101100110010111010101010101011101000101110100111011110100101011110010100000111010010101010111011011011100110001110010101000111100001011111110001111001010001010100000001111100010111100000110001010100111110100010010000000111011010110100110000101111100000000 1100010001100010001000110111101001101001011101101100111010010111110001011001101110111001100010000000000010110111110110100101110110000000100010011101101100100101111101011001010111100000100001100111010011111111001011010100001100110001111101010011011001100110011110101101000011000110110111000011101111100110110011111011100011010111100000010110000011000001001100111111101001001011001111011011111001100110 0011100110011110111111011000001011101111100011011100010101111001101100111111110100011000000101111000001110011111111001000101011101100101001100010011001101000111100010011010011001011111110101000100111101000000010000101011110111001111010111000101100101110000000011011100011111000000011011100000011110010010000010010110010110100001000000000011010010001011001000000110001000011101011001110011000010000101 0010011101110010111111110010001011000101101001010111000100100111100111001111010000011001101100001010001000100010101100010000111100000111110110000101100010001100010101100110001011111011001010101001001100001101000110100011111000111000011001010100101000010000011111101010011100000001011111111001111000001000110001000110101001010010001111001000000111011111001111110000000001010000001100100110000101001111 0010011110000111010001101101101011101101001001000111001110010010111110111011100111111110101011110010010000111111001110001000001101111010011100011001100000000001110111010110011101110011101010001001010101110000101010110110110110110001001000100000001001001011100110011111001111010111010110101010100001000110000101010011001111010000010110011010001001100111110011101111010111111011001100100100100101111010 1110010100000110100000000001000010010111100111111101001110011110111010000111100101100100000101000101001011100111001010010001001111000101001110100011010100011000110000101101010000101111011001011011111011011010000000001000101001100011001011001010001111110011000000110111110101111011111010110100011011010010000110011111101111110010011011010011100111100111001110110110100110000010001000111110000000011101 1101110100101101011110010101101110100110111010111001101111111111100000010001001101011011100100001101110101110010011110110101001001110111010101000100001011010011011101010000011011101111110011001101101111111100010001110101001101010110110010110111010001110000110011101001100000110010000101100011010111010110010001111000111110100110101100000110001101100111110101100110111100010001111101010110101111000101 1100110010100000011101010101010101110110100001001110110111101001101000010011100011100110110011111101001000011011100101110101000100110010000100110000101001110010010010101000000111000011111101100100101100111010101111110111011010110011001101011011000111101011110100010011110100111111100001010101010010111001000101110110100011011101000011100010111100000011100000110111110010000110101100111010100011001010 1001111110001001011001001011110000111100010100011000111111110000111001000010111101000100100000001000000010001011010001010000100001100110011011110010100110111101001010111001001000100000001100101011100111111000110000111010010110001100110111001011011011100011001011010101110111100011110001011011011101000010100011011110111111100111001011000111011100010000101000111101010010010111100101000100001110111110 1111001101111000110100101111110001010000011001111001001000000110010111101111110111100101011110111111100010110001000000010111101010100011100001101101010001110101101111001011011011011111001001001100100000001101110110111100010111010100110001110111101100100011100100010111100111000111000110110011110100011111100011011110011000010001001110110111111011101111100000111110100100010110011010111011010001001001 0011011001001111001111100100011001101011011101011011000110001110011111100011101111000011000001010001011100110100100011110010011010101011100110110011100110101011110001001111010110110010101010101001101101100001010100101011001010001011100010101100100101100101111011101011011110001011011110100010010101010000101110001111001100101011111001011111101110101011100101101000010100100001111001111111011000110111 1000110111010111110111111110101111000011111010100001011001001101011000100001100010000111111000001101111001100010101110011000100011000000001010000101011101101010010001011000101001011000011111100110011011000110101110001101100010110111110010011001101110000110010101010000010111111010011111011001101010111100100101011010101001010001110011011111110111000010110100101111111000010110000101101101011000100111 1110000100100100011110110010100001001001001110001001111001000001000101101111110000101001100011001010100000110100001110110100001000010111001111010000001101110100001001111100011000011110010000110100000110110110101000100000110101001110001000111011110001111111100110111110000100010101111011000110011010001101100101000101010101111110000111011001111101010111011000001101001110000110101001100100111000101010 1111000000000110101011100100001010011010010111000111110111100010010010010010100100010000110101010001000011011101100111010111011000001101101100100101000111111000011010011100001101000001000110011001001001011010010100100000101111101100001101100000111101111100010101110010000001011011001010000110010110101101010110110111110000110110001110111111111010110110110000111101001001111110001110110001001001111101 1000101001001011110001111010000011100101111100010011111110001010000000111011010110000001111111100110101001001000000100111001111110011110101100000100110011110110110100111001100000101101110100000111100110100111011101010010100100011110011101101101010110001000011010011001111000000100111000010010111010011001100011100101011000111010010101001001110001011001111011111000001010111111001110010001111100001011 0110010100000111101100011111001010001110011011001100000001000101110000010010000001111001001110010110101010001110100101011101001111110110010011111100110110011101100010111001111000110111000101010000101000111001010100000110011110001000111011111110010101101101001011011001000000111100100011100000011101110100011001011101101001100110010111001111001011111111111010000111110000110001111000001010110101001011 0001010010100010110100100100111001010001000101101111111111010101001111101000000111010111110000010101010110111001010101000100000101010111101111011111010011011010101111101010011100011010000001100001101010001101011111111000101011111010010000000110000010110111110110011110100110110001010000011001010100011100000001001100001110011100101010000110101010111010001000001010100100010101101100001011000010000110 0010000110110110010001101011000001011101000001000011010111110001111100110000101011111011111000100111101010101000010010101100001111110010000000111111001001000101100001001101000010000101110100100101110011001010111011111011010101010111110011000001010011011100100100000011110110010110010100000010100100001011101101100101111000000001110111111011101011100010000100100000111111100000010000000010010101001100 0011000001100101010001010011001000111010111000101010110111100011011110101001110010000111101010101000111001101010100001001011011010101100011000101010010111100010100010110011001001111000111010010111111111001011100111010011111000101101011010000111100101000110101011001011011010111010101111100111101110110010001110001110010001101011011000111111111111001111101100101111111011100010001001011101100001111101 0110001101000101001110100101100100001111001100000001010100001111100111000001011111011001001111110011111100100111010111100100100110110111110110111111000011000111010000100011000110100100101111001111000110100010100001100111011111010011000011000001100100100011110011010010100001101111101001010001110011110101000100101111100100001111100101001111010000110111110011010001000011001101000001100000110111000100 0110010101000111011000000100100011010111011101101000011110000001100010001101110010101011001100100111100101111000000000101100110101111000110000001100111001011101100011100010011101000011000001011110100100101110101000001001001101101011110000011100000110110101001000101010011110101000100001111101011010100110100111001011010011011101010101101001101000000001000101001000111100001111000011001001110000011101 1010100100101100101110110110110010111011100001010000001100010010111100010011100011110001110111100000100011000110111100110001100110111101111000001110110000100000011111011111001101100101101110111010101001010011011011101101101001010100111111010000001100000100000110000111101000011010000010001101000111010100001110100010011111000011110010111100101010110110101000010110100000111011001100110111101100110011 0111010011011100111111001110101001110011001101001100001101101011000010111010001010110011110100011000111011001110000110000101111000110011110110110001100100001001011010011111110011110011110101000100001110111001000010101011110011111101101110011010001111001111010110101001111000010000010011101110110001010000111110011100011010001111011101111110001110000111100011000111111100010111110000000010001110010101 0001111011100000110111111000000000000110111111000001100010110000101001010101110011101010000010111111001111001101110100101100001011111010100100101010000011000001010010010000000111111111010010110100010001101001001011000011101110111111101110010011000000101001011010111010000111100100101110010001000100101000000010011111010100011100100010000100101111011110100000000100110001101101010011100010010101101011 0100101010111100111100010101101001010100100100001110010110100001010111010001100000011011010110110000111000111000011000000000011001000010100000000010000010001101001010111000111101000001100001010011010101111100000100000011110100010110001010011101100110001100001000111000011011011001011011000101100000101101110101011011101001010010100111000110000001111011010110001110011110011001100000000100010011100101 0100101000101101111011011001010100100101001110011001110010111100010100000000101010010010110010011111111011110010111111001111110100111001011100101001101101111100110100101000110001010011111110100110011000100000100011010101100011000111011111110000100001010001100111010011100101101001100010110000010010001110100100111111100110111000101010111010001000101010000000111000101111101010011010100000101110000101 0110001010100011000010100010101010001010011001100100010010110101111001011100011101111010111001011000111100100000000010010101101110000100110101100000011101100000001001011011010001011000011100011101010011100011010001100011010101110111010001100110000000101010001001111000110100111101110000111001110100000011101000111100011011101010111000010010110010110101010110101010101000011010111010000101111111001011 1101001000011010011000100101110011110111000000100110001111000001100000100011110000110010111001001110110100011110110010010010101010000001011010010110000010111100000001001001111111111110001100110111111110000011011001100001111010001111110001100110011100111001001110000100001100100000011011010100011000111010110100011110000100110010101101110101110110010101000011111000001000010010100011110110001111011110 0100101011111000001001101110001001010001100100110111101101110001010100100001010010000111000000100111000101101001001110111010011000010110010110010000001110001101010101011111010010001011101010101001100110011100110111010101110011000001000011110000111010010011110111101011100001111001010100011011011110000100111101100011001010111110000000001110111101000001001110000000010110110101110001110010001011110001 1110001001110100011000000010100010001001100101101001011101101101111101101111100111100001111010100100011101110010011110111011000101101000000001110101110111010010110110001010110000111000001010001001011010111000101111000110101110010010010111001111001011100101011110111110101000000010001011011100101101000001111011011110001000001011001000000010100000100010110010101000111000111110111000001010010001100100 1010111101110100100010100000001101100110011011101001000100101100111011001111100001100011111000011010001001011010111001100110000111000110110110101010001000001011011101001100010111110000000111010111110111111101010010001011000000011100011000111010101101000101110100111001100100010101000010101101010111011110110101110100010010100011110001100110100111101010100100011000000111111111000101110011011001110010 0001000011110000011010110011110010110101110101111111100111101000011000010100000110111100111001011101011111010101100000000100111011100010000110001010010010100010110101101011111011001111001110101000100010001001000011000111100000111001010011110101111011100000011000011111110000111110110001011011111010101101100101100001010110011100000100101011010001111100001000001111001011000100011100111100110011111100 1010110010100010110100011101101101010001110000100011010111010010001111111011111100111010010000100101110011001001101010010111110101010001111100111000111001111001010011011010111011100011101100101011100101111101001100011000001000110111100100000101110111011000100100001001100111010001110001001001000001101101001010010111001000001001011000110000010110010111000111010110001111100001100101111110110111011101 1011001001011101011011010100100111111101000000000010011000110001011111000000101010011001110001010100001111111110010111011100001111001100110100111101100011011011110111100101101000110010000110011110111001000111010100010101001110100110100110100000010100010010110011101101110110010011011101100010101110001100101110001011101101001110100101110111010011000100101011001000101011101000000001110111010111101001 1011111100111110011110010110101110111011001110001010010100100000110111111110111100100101100110000001101010111111000101000011101100010101001000101011111100001110010011001010001110100011000011101000111011110010111111000010000001101011000000100010001110011110011010100011001011110100010110011011001100001110111001111001101001011100110001010101001111000101100101011001110111011010111001001010010001111011 1000101000000100000011111110000000001101110000101010110101101110001111000111100100001010110000011011100000110101100010110000111111101010110010001101101000101110101010000110111001110110101000100000101001001010011100001110111000111110010000101111110101000001100010111110000001101100111000110110101000111110011100011110100011010111101110101101100110011100000010101110000000001011100101001111101011011011 1101101101110110001001100101100100000010100111111101011100011010110100111000010011000100010001111101110110011000011110111111110110111101010000100010100101001111110110000101111110100010001111010111111101011111110001011101011011001100100111101111111110110100001100011011010100100111010100111110011111101111001101110001101110110010010110110100011000001110111000101000101100111101000111011100111010000111 0000110100100001011001101101001010000011011100001001010001110000011011110000100110011111101110001100110111110100100011011100110100101010010011010101111010000100010000100001110001100010011000001001010101011010100100011001010000110001110001001100111101111001001001100100100000110011101111001000111000011010101110110011010111001100101001111001111101100001110111101001111011111010111010001011001101110101 1110110000001010110110100101001011010111010110010000011100000001100010101010011000011011001000110110101000011010101110100110010000111110010110001110011110110000111100111011000110101100111110110110010001001100010000100110101111100110011000001110101010000001010110001010110010111110000010000001111011100110110011010110011000000000000001110101100110101111111011111101000000110010100010011000101011110001 1000010001010001000000000000011100110010101100110000110111100001011101101111010110111000101110111101000010111111000101111110010100010010001100011110111000010000110111111001001111001010000100111110001101100100100001110000001110011001101100000000101010101010100101000000111010111110010100011000001001101110010011001010010000100000011100011001100101110000110110001010000111010011111100110000110100010100 0000000100111101101110010110001010110100010001111110110001010010010010101111101100001010001000011010010111010010110000100011111000000011110100100100111000111011001111110100111011110110001010111101000001111110011000111110011011011000010111000100010000010111100100110000001101001101001110110110000011011110101001101111010010000111101111101010110010011011011000101100000110101101100110000111111101010010 1101110100111101001010010111000011010110001000010010000001011101110111000110010101001000001110001101000011100111111001001000001011110110111111110000111010110100111101110011100111001010111000100111001001001111101001000000000000000001111011001011010111110110010111000001010101110010011010110000010001011000011000011011100000010100011001011001010011001111000000010110000101100000101110111010011001011001 0110100110000111101011001101010010110110010101001000001001001110100110010001010001110000101100010001011001001111110111101110101110100000010011001000111101000001101001010101110011110100011001101100111010111110100100011100000111001000010001110000100011110110101011001010110010000001010011101101111001100110010011010011111110110000111001110010100001101010011000010111001111111001000000101011101101001001 0100011010111001110001010001111000110111100010000111011100101010011011000110100000000000001101110000110100100001010101010001101001100101010001111001111100001001101110110001100010011011001111100111111001101001000000010100100110110110010101101011011000110110000100110011001101101011111100010000001101001001111110111101100001100001000001011010011011001101000000111010011110011100101000001001001110010001 0011101011011110010111001000101110001011101000111111110100111000110111000101001001110001101101111011100011101001000010001100001000000100010000100110011100100011110110000110110110110011010101100100111011110010010100111100001110111101000100001011110001100010000011110101010011101100000011101010011111110011100111011101100111011100000100110110100100101000000000011001100010100010111010010110010011000100 0100011000111001111101010110111100011101011001101000111010101111100101000101011011111100101110000100111011011101010100100101010001000011001001100101010001010000010111010001110101001110000101001100101000010000111111110001100000001000100101110011100000000101011000011111110011110110101101001011010101010000010000000100101101110010101100101010001010100110011100000000100010111110100010101001011000001101 0011101011010100011100111000100001010010001101011111100100100000111111110101101110001101111011111011000011010010011001101010111001111011111011011010001010111011100100001100111101100010101111111011010100000111101000010111000010011011001110001001110101011100110111100101100011011010010110010000101101100000011110001100111000011101010100000110001100100001010011011110011001011011111110110011110010111000 0110011101110111111001011100110010110111111011101011111000100011101000101001111111100010110001111101000111001100110101011100000000000010000110011101101100011100011000110010001010101101001100001100111100111000010010011111110010101101010000011011111000111110110100010001010000110001100001110100100110111001011001101101010101100111000100100101101111001010100100011110111100100111111000100111010001101110 1011000010100000101110000110000001001010101111010100000011110010011011000100100111010010011111011000110011000001100000000111110110000110110010100001001000111111111101001100100010101111110000110011001100000110011100101101011000010010010010111110100011100001101101001101100011011100011101111001110000100000100101101100000110110110110101011001010010100100100101001011101101110100001111111010001011011010 0111110110001100000100101000111000010110101100111000111000010011100110101101110110011010101010010110101010101111011011001000100010100110000111000001100111010011010010001010010001111111100011110011010110111100111110100101110001101010010100010000001000010011000011111010001101010000100110101001011001011011000000010101001111011110011000101110000101010111101001010101011101101000000100111010100000000010 1010100001000010110110011001111110110010111011100000100011010011010100111111000100010110011100000100110100101000110001111000100100000010100111100111101000101001001100010101000111101001111010001000101001011101100110010011100010001110101101001011110000001011100101000111001001000101011110000001011111001001111000111111110101000001111111111111110010010011110001100011100101111111000011101100011111111000 1010100000011000010110011101000011011011101111000011000010100001111100100111101110101100010101101110010011011111101010000111000000111111000001000100101011111011010101100010000010001000011110011011110001110110001110101000100011111010001110010110110100101011101100000101010010101011010111100011011000110101000100000111000111101100011101110010011000100100010011000110010111110111001011100100110111100110 0110001011001110110010010100101011000111101101000011110010000101110110000000000101111010101010001000001001101001001111101110100101010110000101010011011110101100010101100001110111010010100000000100100000100100101011010100100100010111011011001111111010100110000000000000101000110011000000100001101001111011011100100000101001101110101110010001101101000110110100001110101001111010111000111000001111010001 0101101001011110000010001111001100111100001101111101011011101011011100000110010111101101001000110100010111100111011011001011000010110010001001011110001100110011101100011100000001111101010100000101000010111000110010100111000000000101010000001011000100011101011101111111110111110001001110101110010010001010010011101011110101010001001110100110111110011011110100110101010010011010011101001110000011100100 1101111111000110101011110101100000101101111110000011010010010011110111110011011010111001001100100110110110110111101100110000110101110101101000011001011000011010000111010100110100101101110000011001010111100100100100001011111001011001000000011100100000110001101010101101000110111110100010010010000001101011011010111010110111001000111110101110011111000001101000001111110011000011001101100010000101000011 1111011111101010110000110110101000110110010100101101001111000011111100001100100111000010110001000100001011100000101101101110101011111000010011011111111100101001110100000111101000100101010111010100010100110111000111011000110100111100101000101010101111101101110010111110110100011010110000111011100011111011000000101001010010101000111100111101011010000110110101100110101010001101111000101100011100100010 1011101010010110000100101010110000100010011111010100110111011000110010001100111110101010110001000101111011101010000110001001110001010001001001110101110010000101010111001011001111011100100011111110001110000000000001010000000011010001000111010101111101010000100100011001010111100000000011100011100111101111100000100000000101111110111101111100000100010110001111110110011111011101001111101110001111000001 1100000110101011101001110100111000110111000101111100111101000010001011001011011101010101011101011011001001011111010011110110100000001011100001001000101100110100101111111111010000101011100010110000000110000001101110100110100000001010010011010000111000101111000011001111110100111111100010000011011000110101101011110010010011010100011001011100100101101010101111111011111000001111110001100110010000101101 0000001001011100100010001101001001101011001111101101101011111001011011100111101111101001101111000010111001110111101011110010011000010001101100010110110010001011000011110101001110011011011000101111010001111101100011100010101101010111000010101100010010011000100011000101010001111111111110001000000110101001001010001000110010111011110011100100100000011101000010001111100010001001100110100110000010100110 0100001111100001000010111100100110000011010010001110010011100000001111101110101001100011100110110000000100010001011011101001001100101001101110100010111001011111001010001000110110110010000000111000011100001001110100100000100001010110110010001010101011110111110001110100111001100101010110000000100001000011010101111100100110000111100011111111010110100101111010011011011011111110010000001101100110110100 0011010111101110100011100001111011111010101110000101111000101001001110010010011000011110010001000101100101011000100111001101000100001011011110001101011110101100000100010111111101101100101011101001010110110010101111110110001101000110010000000001110100001101110100001101011101011111000110001010111011010111111011110100001111010100000010111100101110001001011000111000101000111100001001011100111000000110 1000001110111111011011000110000001001111100110001000011101011101011000011000011110010111010011100011011011001010111100010111001101010110010000100001000110000100001111101010001110101100110101010100101101011110110000101110111001101011011110001000000000110101010000000100101000111011000011100001110110000000001011101110011111010011011110001100001010110010111101010110000011011111101000100101010001111000 0010111001011011010001111110110010001111000011010101111011010010010111000100111111111011101000000110111101011110100001000001001110000101001101000110000011000111001001000101000000101100101001101111101010111011010001101010101101010011010101010010001011010000110010101011101100010000010010011110110011011010101010000011101011101001111101010100001001111110000010101000000101000000110011011000010111001110 1110101111110010110110110101101010010000011111111011101100000000011001101111010011000100111011100111100101011001011101010110110110010110101110101011101011110101101011010001000110110001101101010011000110000001111000100010000010111100111000101011110101110101011001111011101001000111101111001001111011110111000010101001110101001100100011100010101001011111010000000101100101011111111000011000111010110010 0001101101000101111100000101101101011110010110011011111011110010001000101100101100000100111101011101001110010010101100010010100000110010100001110001010110000001101100011111001111010001101101010010111001100011110101101101000001101101011110111110010010001000100101011011010001011101101100100101011111001000101110011110010111111011000010010111001010011001100010000100011101100011001001110111001101011010 1111010111010001111111010111010101111100001110011111110101010000111010000010100110000000011101111100001111010110011111110000011000111001101101000101011111010100000000010111100101111001101111100101100011001001010010011001001011111001010011100100001011000010010001001010011001010010110100011100111011111010100111100100000111110111110011110001100010000010110010111100101111110100001111110110100001011101 0101101010111011000001100100100110010011110010000110101010101100010101000110111101110110001001110010111000010101110001001110101010011001111100110011110101110100001100001000110010010110010100111011001101010001011000011000001110000101011010001000111000011000100000111101001001111100100111001001111110111011011010100000001000001011100001111010101110110010010001010011001101110110100101101001010100000011 0010101010010011110101001001110111001100001001010100101110100101110011100011010111001000001101101100100010000000001011010000011010111100101000110011011001111110110100100001100001111010111000110100100111101110010010100101110100011101111101011010110110111100010001111011111011011100000101000001101000011011100101100011100011001111111001001101100100111011010000011101111100110110011110001011000101110000 0101000101010011100110101101011100101010111100010101101010000101100100101110111000011011010111011001101010110111001000110100100100101011001111011111111010101011000101101000000111000001101111111010111110101000001010110110010000011100010100010100000010011000001101101100010000111000000010011110000110011100110110010110111010001101000101011001010111101000101101100111110110011011011001101111110110011101 1010001000110110111000110001000000001001001011101010111111010010101110010101010101010001000000100100010101111010000100011101101001001110100101000111001101111101001001101000001100110111000110110110111111110000101000001110001110100110011100000000100001101001000101101001111011010110011010011010011000101101011000011100110010010111010001100010000000010100111101000001011000001111010011100101001010010001 1001000100010001011101011101101101101111011101110000110110011000101111000000010011010110001100100101101101000110011011111100110000001101001111110001110010010101001000111100110000001011010100011111101010001000011101111101010010100100010111100100110111011010010100100001110111100110001100010000011000100011101001001010001111110010010010000011001000100110111011111010100001001001110001010111110101110101 1111111010101000110010100110011000110111000111011110001010001111001010010000001011101101100000010000010110111111101011101001110001001000100000110010001100110101111110010100010011101111010011111110110010001001111110110100011100100000010111001101110101101100111110100001111101110011101001111010000001110010000001011101100100110011101011101000011110100000110001110000010100110101001111011010110011100000 0011011101111101100001001001100010011110100000110011011101110100010000101110011010100100110111010101110110101110101000101101110001010001011111100110100000011000010000011100000101110000010010110110011111000111001100101010011100000010110010101011011111000111011001000010100100100101100100011101100110101000101010010110100001010000100010000111101010111101000111101101110001111110110111000011000001101011 1001001110000111100010111011011100100010010100000100111011100001000010010000000101001110100110101011000001100010111001011001010011010000010010100011111000010000101001011110010001001100101110001111101011101011110110100000011111011101101001011001101100000010001001001110111011010110111001010011100110111000111011100111101101101101101000010110000100100011010110101011101011100011000101110110000100011110 0001000111010111111110100010100010011110110000110010101011100111111001111101101100101001111010100010100100010010101100101111001101000110010001000101011000110000000101111101011111011111100111011010101010101010010111000001101110100100010100011100011001101110011011011100100011100110111000100011100110100100011101011001101001110110101001101110101101010011010110011001000110001110110100010000001000110101 0011000100100011100111110101111111101100001100001100101101111100100001000111101101101110110111010101100011001111100000000101111011010001111001000011000110100011110001010001000110010101111110110000111010000010000000010000101010111100000101011101110110111111110111111000110011111100101010111000001010111100101110110011111101010110011100101101001100010001011111101110010110110001111010100000111110001101 0100100011110000001011001001011111010001111111111010100101100010111111010010011011010011001101100101010001110111000101011110001100101111101110000101000011000101101011001101101111111110100111000010000011010111000001001000010101001001110111100011111110110110110101111100111101101011100011001111101101011000110101001101101101101101100010010101000001010010001111100110001001000110000011001110110000111100 1101011100000111111010100110100011100100011010000010110010110010111010011101000011001010010101001101000100101000110100010001000010001011000110011000001110001000000110100010011110101001101010101010100100100100100001010010100001101111100011101000100101101000101101001011010001011001010100011111110000111111001110110100001100100110110110010011101000101111111100011111000111111000011001000001000010011011 0011001010110010001001101110111011111110111011010000101101010110011111101001100001101001011010001110101010101001010111011101000011001000100000110111111100010010100001001000110001010110001010001101100110110111001000100001100100111001111000011001010010000011111000110111011000110110000111111001000011101011000101110110111000101000000101110100101011011011011110001001111110100111111101001111000010000001
cTrader Algo

Symbol【cAlgo API】

10/27/2020 1/28/2023

5年以上前の記事です。内容が古くなっている可能性があります。

通貨ペア情報取得用

Robotクラス(本体)が持つプロパティSymbolから様々な通貨ペアの情報が取得できます。SymbolのインターフェースはSymbolInfoインターフェースを継承しています。

 

SymbolInfoインターフェース

通貨ペアの基本情報を参照するためのインターフェースです。

public interface SymbolInfo

関連するインターフェース:Symbol

 

プロパティ
(string) Name

通貨ペアの名前を取得します。”EURUSD”とか。これをそのまま発注などに使用します。

(int) Digits

価格の小数点以下の桁数を取得します。

(double) PipSize

1pipあたりの価格を取得します。

(double) PipValue

1pipあたりの価格を口座通貨額に換算して取得します。

(double) TickSize

値動きの最小幅を取得します。

(double) TickValue

値動きの最小幅を口座通貨額に換算して取得します。

(double) VolumeInUnitsMax

最大発注通貨量を取得します。

(double) VolumeInUnitsMin

最小発注通貨量を取得します。

(double) VolumeInUnitsStep

発注通貨量の最小増減幅を取得します。

(IReadOnlyList<LeverageTier>) DynamicLeverage

通貨ペアの通貨量別のレバレッジを取得します。

(double) LotSize

1ロット当たりの通貨量を取得します。

(MarketHours) MarketHours

マーケットが開いてる時間を取得します。FXだけなら気にしなくていいです。

(string) Description

通貨の説明を取得します。EURUSDなら”Euro vs US Dollar”とかになります。

(long) Id

IDを取得します。使いません。

 

(以下はcTrader4.5で追加)

(double) Commission

トレード時の片道手数料を取得します。(単位はCommisionType次第)

(SymbolCommissionType)  CommissionType

手数料タイプを取得します。

(double) SwapLong

買いポジション保有時のスワップ金額を取得します。

(double) SwapShort

売りポジション保有時のスワップ金額を取得します。

(DayOfWeek?) Swap3DaysRollOver

スワップ3倍付の曜日を取得します。

(double) MinStopLossDistance

最小のストップロス距離を取得します。(MT4で「ストップレベル」と呼ばれてるやつです)

(double) MinTakeProfitDistance

最小のテイクプロフィット距離を取得します。

(SymbolMinDistanceType) MinDistanceType

上記Min~Disanceの単位を取得します。PipsもしくはPercentageを返します。

(Asset) BaseAsset

通貨ペアのベース通貨を取得します。(EURUSDならEURの部分)

(Asset) QuoteAsset

通貨ペアの決済通貨を取得します。(EURUSDならUSDの部分)

(double) MinCommission

最低手数料を取得します。単位はMinCommissionAssetによります。

(SymbolMinCommissionType) MinCommissionType

最低手数料の単位を取得します。AssetもしくはQuoteAssetを返します。Assetなら単位は口座通貨、QuoteAssetなら単位は決済通貨(EURGBPならポンド)になります。

(bool) IsTradingEnable

通貨ペアがトレード可能かどうかを取得します。

(SymbolTradingMode) TradingMode

通貨ペアのトレードモードを返します。FullAccess(トレード可能)か、CloseOnly(決済のみ可能)か、DisabledWithPendingOrderExecution(待機注文のみ執行可能)か、FullyDisabled(トレード不可)のいずれかを返します。

(int) GracePeriod

スワップフリー口座でポジションを取得してから手数料がかからない日数を取得します。

(double) AdministrativeCharge

スワップフリー口座でポジション維持にかかる手数料を取得します。

(DayOfWeek?) AdministrativeCharge3DaysRollOver

スワップフリー口座でポジション維持にかかる手数料が3倍になる曜日を取得します。

(double)PnLConversionFeeRate

Gets the symbol profit and loss conversion fee rate… だそうです。(意味わからん)

 

 

 

メソッド
(double) NormalizeVolumeInUnits(double volume[, RoundingMode roundingMode])

volumeを発注可能な量に調整して返します。例えばvolumeに12345を渡すと、(VolumeInUnitsStepが1000なら)12000が返ってきます。最低でもVolumeInUnitsMinが返りますので0やマイナスの値渡しても大丈夫です。

逆に言えばVolume計算値がマイナスだったときは発注しないような想定のプログラムだった場合でもこのメソッド通したら発注できてしまうので注意が必要です。defaultはToNearest。

(double) QuantityToVolumeInUnits(double quantity)

ロット数を通貨量に変換します。quantitiy*LotSizeが返ってきます。

(double) VolumeInUnitsToQuantity(double volume)

通貨量をロット数に変換します。volume/LotSizeが返ってきます。

(double) GetEstimatedMargin(TradeType tradeType, double volume)

(cTrader4.5以降) トレード方向と数量から必要証拠金料を取得します。 

(double) AmountRisked(double volume, double stopLossInPIps)

(cTrader4.6以降) 指定ボリュームで指定Pipsにストップを置く場合の損失額を返します。当然決済時の為替レートによっても変わるため、あくまで目安です。

 

LeverageTierインターフェース

SymbolInfoDynamicLeverageの要素です。発注量によって異なる最大レバレッジを参照します。

public interface LeverageTier

 

プロパティ
(double) Leverage

最大レバレッジを取得します。

(double)Volume

Leverageが有効な最大通貨量を取得します。(DynamicLeverageの最後の要素だけ扱いが違うかも?)

 

サンプルコード
Print("この口座の最大レバレッジは{0}倍", Account.PreciseLeverage);
Print("最大発注数は{0}通貨", Symbol.VolumeInUnitsMax);
Print("{0}の通貨量別レバレッジ", SymbolName);
foreach (var lt in Symbol.DynamicLeverage) {
    var lots = Symbol.VolumeInUnitsToQuantity(lt.Volume);
    if (lt != Symbol.DynamicLeverage.Last()) {
        Print("{0:#,0}通貨({1:#,0}Lots)までは最大レバレッジ{2}倍", lt.Volume, lots, lt.Leverage);
    } else {
        Print("{0:#,0}通貨({1:#,0}Lots)以上は最大レバレッジ{2}倍?", lt.Volume, lots, lt.Leverage);

    }
}

実行してみると最大レバレッジが表示されます。

 

 

Symbolインターフェース

通貨ペアの基本情報に加え、BidやAskなどリアルタイムの情報を参照するためのインターフェースです。

public interface Symbol : SymbolInfo

SymbolInfoから継承されており、リアルタイムの情報を参照するためのメンバが追加されています。

 

プロパティ
(double) Ask

Ask値 (買う場合の価格) を取得します。

(double) Bid

Bid値 (売る場合の価格) を取得します。

(double) Spread

スプレッド (AskとBidの差) を取得します。Pipsじゃなく純粋な価格差です。

(double) UnrealizedGrossProfit

保有中ポジションの総利益を取得します。

(double) UnrealizedNetProfit

保有中ポジションのスワップ、手数料を加味した総利益を取得します。

 

SymbolInfoのプロパティ

Name、Digits、PipSize、PipValue、VolumeInUnitsMax、VolumeInUnitsMinなど。上記参照。

 

メソッド
SymbolInfoのメソッド

NormalizeVolumeInUnits、QuantityToVolumeInUnits、VolumeInUnitsToQuantity。

 

サンプルコード

Pips関連の計算にSymbol.PipSizeはとにかくよく使います。利益額や損失額の計算となるとSymbol.PipValueも結構使います。

// 1本前のローソク足の高値をストップロスに指定して売り発注
// 最大損失が10,000円以内におさまるようエントリーボリュームを調整する

// 最大損失とストップロスPipsを設定
double maxLoss = 10000;
var stopLossPips = Math.Round((Bars.Last(1).High - Bid)/Symbol.PipSize, 1);
var spreadPips = Symbol.Spread / Symbol.PipSize;

// stopLossPipsがスプレッド以下だったらなにもせず止める
if (stopLossPips < spreadPips) Stop();

// volumeを計算する
var volume = maxLoss / (Symbol.PipValue * (stopLossPips + spreadPips));
Print("maxLoss={0}, pipvalue={1}, losspips={2}", maxLoss, Symbol.PipValue, stopLossPips);
Print(volume);
volume = Symbol.NormalizeVolumeInUnits(volume, RoundingMode.Down);

//発注
ExecuteMarketOrder(TradeType.Sell, SymbolName, volume, "SymbolSampleCode", stopLossPips, null);

デモ口座で試してみてください。手数料分はずれますが、ストップロス位置で最大損失くらいになるようエントリーされるのが確認できると思います。

 

 

RoundingMode列挙型

Symbol.NormalizeVolumeInUnitsでの計算方式を表す列挙型です。

 

ToNearest 近い値。奇数丸めっぽいです。2500も3500も3000になります。
Down 切り捨て。NormalizeVolumeInUnits(volume, RoundingMode.Down) の結果は指定したvolumeよりも小さい数値になります。
Up 切り上げ。NormalizeVolumeInUnits(volume, RoundingMode.Up) の結果はvolumeよりも大きい数値になります。

 

 

SymbolCommissionType列挙型

手数料の計算方式を表す列挙型です。

UsdPerMillionVolume 100万通貨(USD)あたりで計算され、単位はUSDです。
UsdPerOneLot 1ロットあたり計算され単位はUSDです。
PercentageOfTradingVolume トレード総量の比率(%)で計算されます。
QuoteCurrencyPerOneLot 1ロットあたりで計算され、単位は決済通貨です。

たとえばUSDCADでCommisionが10、CommisionTypeが”UsdPerMillionVolume”の場合、100万ドルの取引あたり10ドルの手数料ということなので、1lot(10万通貨)トレードしたときの手数料は片道1ドルということになります。

少しわかりにくいですが、GBPUSDで同じ値だった場合は手数料は1lot片道1ポンドになります。(10万通貨=10万ポンド=約12万ドル=手数料は(100万ドルあたり10ドルなので)約1.2ドル=手数料は1ポンド)


まだコメントはありません

新しいコメント

コメントは承認後に公開されます。承認まで次のコメントは投稿できません。

cTrader's Life

© 2025 ajinori