0001010100110111101011110000100010101010000110111001100010100100010110100101110011101010010100101111011110011110100010111010110001010001110100010101100101110111010001110010001001100001101011011010110000111001111010110100010111100101100111101011100101111001111100110110111111001110010011001001001011101100101010110101101011011010101000011111110101010011011001111011100010101011010111100110010001011110 0000010111111111000111101000001000001101000000100110101000100101010101100011010010110010110001000010110101001010000110011001011100011011101101010101010110100110001011111100000101011011011000010101000011000101001000111001101101011100000010011000010110111110001110111001111101001100000000111110111000100011000010101111111011100110100010010000010111100110101100110001110010101111110111000110100110101010 1000110100000111110001000101000100101001110010010111011110000011110001000110100101101001110110111001001111011101101111110111000110000111111101001100100111001000011111100101011101100001011111001110100111000101011100001010001110011010011100101100000111011000110000100111110001001000100111110110000110001101110110110001000001110100110010110000101111000000011000100101100011101111010011001110111010011011 1011111000100011101111100001011111001100001010101111001000010101111001111011010000010011111110101110001110100111111001100010110101001000000011011001000111010101110111110110011011001111111011101001001111011111010111110101110110101111010000011111001100100101000111110100111010111110111101000100011001010000110101000011110000100110101110000110111001010000100010101101101010000000101100001110010000001010 1110111100100111001110101110111110011010110100101011011011010010000101111000100110010011010111100110011100010011110001011111011001011010110110111000001101000110011010000001110001111001010101000111011010111011001101101010010110111000000000000100110010001010010110001101100110010111110110001010011101011101000011101100111000111111001010001010110011111100100001101101100010001010110010110110011010011001 0011111101100000110110101100001010011110110111110000011010000101001110110011101000110001111010110001101001111111011111100110010011011100000001011100010100100010101100110000011000110001000001010000001100011010110010001101111101010101110000010000000110000101001010010111111111001101110101111100010001001111111000101000001011100101001101011000011011101001101001000010011111100011111001110000101110001101 1100101110101111110110111011110001101011000010001110100101100011001011100100101010111100011011101101111100110110011001011001100010000111111010111011111111101000100100001100111110100101011001001110011101111110100101101111101110010010101010101011101100111001100010100100100010011000001100101000010001101101100011101110110101110010100101100100110111110111101111111001111111010110001110000010101100101111 1001110110110110100110111110001010110000000010101111100111111000001110101101011111110110101101110110010110010010010010100000010011010010000000010001111001111110111101110101100000010111011011011110010000001100000101000001110010010110010010001110111100110010010100011001010101000101010011011100010101001100100100001101101001000110011110001000101101001111001101010011110111000110000001001010101111001001 0001101011011000110101000111010001001111001001110100001110000111111101100011000010010101001010101111001000010101010100100100010011110010010111110000100010101000111000001001101000100111110111110101011110111111111001001101110011100000011010111001010110001110100111001000110110011011000111101001100010100110001001010010001100001100010101100001111111011101011100001011001010010001011110011010100101101101 1101110100111110011010011100011100101110110001110010110010011101001100001000011010001101101010110100011101111011110110111001001011001010001101110111101110000001010110011110001110011011001000011000111011100100110010100110000110000111111110001110101111001001100100001001001001100010000101000000110110100001010111101010011000110000110110101110101101101001111100101010010110100011110100011100000010001110 0111110011011011101100100010001000110110001011000101110000010101011110001010001001011111100101010011000100000011100100000100100011100110011110011111111011100101000110100110110011101001001100101110000110010000001001111011010001011010101010011011001000100001001010110000011100000110100000001111000100011010000000001111000000001111001011000000100011101101100001001100001001011100100010011100010001000000 0101001010101001101111001010100011011011111101010110101000111101111010100010111000000101100010100001001111010110010010011101000011010101001111111001001100000011011011011010000001101101010100110010110001001111001110100000101110010100000000001001011001011101100101001011010000001010110000100100010001101011010001001111101101011011011100100110101001111100111001101011001111110001110111111101001100010111 1101110111010100110010010110100000110010011110000000001100111010011011111101001010110011010100111010010111000010000010000001010111010011001000110001111001100111110100010011101111011001000000101100010001001001110100001111010100110111010100011000011100111110101100100110001000010000010111001001010000001001011111001111111111110100000001111001111100000010010011011011000010111011101101011111111010110100 1110111011001111000011011111010101100000010001110110011111101101101011000001000011001111111001011110110001010001000000001111011111000000100010110010100101111010101100011100011001010101110010111010011001110000001000101001001101101011101101000100011011001010011011000110010101100010100011001111110110100110101101111010001011101110001101010000100110000011010111000011011100011001110101111101111010110100 1001000100001001101111111111100100110101001111110011101010001010001011111010000100100111000011111001011010001011000010011011011100110001110110110001111101011100010010101101110011011111010111101110010000011110011001110000001100110010100011110110100001000011111101111001000011000010000111111011011111001100001111010000010110011110110011010100110100000011011011010111110001001100011000110000110101011010 1001101100001001010101111100000001111100111110100100000111011111010010101011101000111011001111111001101111101001011101001001000010010000101001000000000010110000100101111101110101000010011000001100011110101011111101110000000101110000110101110111011001100100101110011011110110011111110110011111000010010101000110011000101010100110111111100001110001101000111000110000110011101101000000110110010101001001 1011000100011101111011111001001001111101001000011000010011000110011000011100101001001100001000100011001110001001000011110011100111010101100101001100101110111110000011111011011001000100011001011101011010110000101000101100011011000001101101111010110111010101101110001001010001110000101010000100011111101010110011100000001000100011110101100011000011100101100111011100010111001010000001100000000000100110 1110000001011000010000100010101000111111011001001111011011101000101101001110101110110000001000100110110111001111101100011000101101011101010011100111011011101001001010011111001000110011001000000111110101110111100101101111100011001110110100011111000011000110110101101010011000100000100110010011101111111110011110010100110010010000110000101001111110001000001001110000110000000110000110110010010010110011 1011111000000111001010100010000100111101001100001001101011001010111110101001101100100110100010011010010010100000010100100010001111010010010110100110101101100001010011000111001100111001111101000100010010110110101001010001111100101100111100111011110000001100001001001100001001101000111011110111101111101000010100011110001001001001111010001100010110110110111001000100010000110101000100001010101011110001 0111000110111000000101000110101111010100011010000000101111110111011010100011010010101010100010101011100110000101101101000011101111111001110110101101110101000110100011100101101000010011101111111110001010011101111110010101110000001010111100111010011101110110110011111001111111101101101100110001101111010011100000000111000111000010001101001010011010101111100111001111101110101110011010000100111011110111 1101101110010101111000110100001001010001111110110111110000010000011101101101110111001001011101000100101011111000100100001011000111111011100101101011001001000011110111000011101100110000001101011100000100011000010100101010101011010111101000111100111011101100010001000111111000001101101000000111100111011101001110110001110101001001110111100001011010000011000110111101000011111100000111001111110000000100 0001011100010110100001010101100011111010110010111111000110011001100101000000001000101100110100000000110110001011101011110100001110110111110110001001010011010011001001011010001110100001100100011011011111010100100100001010011101000011101000100111100011011110111111000100100001011111110101001110011011110101100000010010001010100110111111011110110001111100101001110001000011001100100111111100000101000110 1011101010001011011110111100011001011010010110100111101100101000011100001000100110011110010001111110101110111000110100010010011110110111111010100000111001001000010011101000001000010111011101100100010101000111000010000010111101101100011100111101111010001100100101110000101000111110010111001001001010001001111010000001101101011110101000011100010111000010100001011111000001000010101000101111110000100000 0101011011111011011101010001011000110000000001100110111110011000011111001101111100010110101101101111111011001110011010111010111001100010110011010110111101011010010010100000010101010101001010000100011110011000000110110100101010001100111011111000111100010011000101001001110111011110111110110110101111000011111111001100100110001010001100101011111101101000110010011010001000111001100011000111101001111000 0010001110001011101011100111000000111111010011010110000011010110101100010000011110100000010001101011101001111101101000101110001100010000111001101001011110101110100001110010010101111010111011110100001000001101111100010110010011110000001100011110101000101100100000101011000101010011000100011101010101010010100001000100100110111100110100001101010111101011100101101110101111000101100101010110011000111010 1100110110010101110111110010100010000101101100011000000111011110101000111101000000110101001101001000010101011010010011101100111001100011111110100111010111101110100111000111010110111100111110001111110110111110100101111111011010111101111100010100111101111100101111011101001001101110100111101001100011111110000000100011010000011110111010110001011111001011010011110001011110011111001000111111101110110111 0011011010001011010100111100110011100010011010010111101000110111100011011110101011011011101111000000110100101111110001001100111101011010011111111011001111001111010000001001110001110000001001100110101100110010111000111100011111100100010000011001001010001100101101000000110101010110001011000010101100110100000110110100011000001001000111101101110001010000110101010001111011011000010100001110111000001110 1011101110111001110011110111100111100010110101101001011010011011000010000010101101000111110011011001110001101100010001010101101001111001111110100010101111101000100011101110111100000101100001001000010000010000111101010001000111111010001110100010111100110011111101011111001100010110001010111101110000010100000010101111000111011010001110100011000001100100000001101000001101001111010111001101110101100100 0011000010111000100111011001000000100101001011011101100110111000101110011000000011100110000111011110100000000011110000001011011111000010001100110000001110100011111000101101010011010011111011110110010001101010001000110011010110101100011100010000001100001001110001011000100001100100011100011110101000111010101001100011111000101010001011000011001111111100001010101000000100010000011010100101111110111110 1011000000011111000011000110100111100101100000010010001000111010011001011101011010001110010100001111110111011000110100101001011100110110111011001010101100100010001100000110011111101100100101000100101011001010110110100010111101111101110100110111010011000111110010011011101110100111000110100010101101100101011100001110001100100000111100110011000001101001000110101101101011111000111011101010110101011100 0110001000010100101000010011011100000000001110110001000111011110001100100111010011000101100111100010010100110001101110011000111010000010001011101001011101101001011100010101001011011000000101100110010000100000001001010100010000111001001111010110010000010101100010110110011111010110001010101010101010000101010101111011001011110111000100001011010100000100011001000101010011110101101110001101111000111001 1010000111110000100100111001000011111101101101111111110100100000001101011000000000111011100100001011110111011001001000111101000100000000010111101001001010001110000001001111110011111011100110000100011101110101110000000001000001101111110100011111000000000001011111001010101101110100110101001011110101111111101001110000100011101010011100111000010101000101111011111011110100111011110110111001110000010110 1000110100011111010111100110101001110111000011110000001101101111101000110000110100011110111101011010001011100000110111111000001101011111000001111100101001001110001010000110110100111111000110001101001111000000010101001110100001100010001100111001000111000111100111101101010011010011010110100110110101011111100110001011111101011010010010011101011111101110010000111100001000111100110110101111010010000000 0110010000100000010111110100011110100111011101010100001100011110100000001111110110101111010010011010110111101101110011011100000010101111011111001100100010010010001011011001100000000000110100100011111010111101100111010100110001111100100101001110001001100011010010111100100000111001011001111011001001010001001001100111000111011001111111011110110110000110001010001001010010000100101011010111010000100011 0001100100101110101110110010010110000111100101111101100101111000001101101011000111100010101110101000101010001101111110001101101000011100001111011001001101110000100010101111001110100110001110100110111111000010011110011010010101010110110010010100011011100101110100010011000001110010001100101010111001100011110000011110011101010011110001111100010000110111011011010111000101010110010110000100101101000110 0000110001011100100100100100000111100001110110001001000101001001000100010100101110110010001010111111100111001111010011110000010001110000101101010000000011100100010000111100001111100110010101110001000110100000001101101110101011010111110000001010110011010001110101101111001011111110010001110100011111010001100111101111011000100101000100110101101011000001010110111000100001000001111101010101010001010111 0101110101001000101000000110000000100110000111000001010111110001110111111110011011111100011011110001010111001000110111010101001011100010001100010011011110100000101101000001011111100000110000111011101100101111111011100111001000001100001101010100110000101000010000011100110011110110100110001111001101000001111111100001011011000011011100001100001111010110111110101011100101010001001001101100110000111111 0100110100110000010000010100001010001110001011010111100111010110100101101111001100100001010100111101011110101110111000010111110110000111011010111010100111111101001001110111001101001011000100111010100011110101100101101100000011100100011110001111100010100110000100111001111000101101011101001000001110111000101011100011000000110110111000110011110110111001101111011111101001001100011101000111100111011100 1110011100100010000000100010000100100000010001110111100101111110111111010010101111100011001000101111010101011010010001010000111101110011001110101010001000011000100011111111001110001111110111011111010101111001010111101111110000100100011101001110100000110001001010011011000011110000010111100001100010001111000110010111100111111000100010000110100001100011100010001001101000100110101110101100011010110001 1001111010110001110101100100101111110010110100001110000110101001101101011100101010000101111011101110011011110111011001101111101000000011001001110111100100000111111000100101100110000111011011011101000101000010000010001110111101110100000110000000000101111111001110000011110100001001110000111010000010100011110010100001010110010011110010000011001100100111110000100001000100111111110010101000011101100001 0001100000011011000101001010110010011101100001110110100100010111000100101100001010010100000010101010001100011011001000000011101110111010110001010111010111101110000111000010000101111100011000000100011011000000001011011110000001111001000001101000010010100010010110100100110000111100111011101010111001001100010001100010101101101011101010011101001001110010001101001100101110000101011000011100100101100011 0111100010100101110000100010100111000010111000001010101101010110001011011011101000010110001010011001110110010001000111011010100101001011010011010001100011010111011011111000101010000011011100111101001011010111000011110110000010111110111011100011110000010100001001100010101011111000001001101001100110011100100010011111011100110110010111010111001011000100001101011100001101010111101000101010101011001011 0100110001110101111101011001111010010100100100110010101010000000011011000010110000101001111101010101010010000101001000000011111001100111000100011111111011110001110011100011101111111100010111100010001100110011110010110111111111011101001111001110110101111110100111101100100101101101011110011010011010000001110001000100111001111011010000111111110011110110001000110101101010101101110100110010010110100001 1111001101001111100100000111101010001000110001011100000100011111100111111111110100010010000101011110011010101110001111100111010101101011010110000000001100010101110001111011010111110010011100001001000011001011111000001010110010101011100101111100001011100010110101001111001000010010001100101110101011100110010111100101010011100100000011001001001000100010000101110010010111001101100111111000001110011011 1000000010010101011011000110000110000100011010010110110011101100011100111110101100110010011101010011110001100100000100001011100111000000000011011100010111111111100010001011010001011100101001100000001001110100001100110111001010110011001110010000100100101111001001111000000100111000101000100110101011011010101001101111110100110010011001000011110011000001010111110000011000000101100111111001110110011001 0001110001001110001100100101011001100101000111101110010101100001000110111110011011011110101110100100100001110100111101100101101011000111110010110000110000000110101000101100101100010000111011011100101011101100101010001011110000000101011111010010110101100110100001100111110000100101110100011110100010110011010110101001011001011100010011001110100011110101101010111111110000000011000011010000110101011011 0110111001101111110110010111001010111010110001110101110011001001101010101001101111100010000100001100001011001101001000101001111001000100001100011110100100101100001100010001001000000101011000101101010100101101101010110110010101011011101111000001100001001100101000010000000001010110001010001011010011111100000111000111000001000101000111000001110000001001001101001101100101100001011101011001110110111000 0000111010110010011100101100110000000011000000100010100111011011110101001011110001011101101111100100111110001001111111100010001101011110101010011011101110000001000001000011100010101101111011100010000100110101100101101101010110001100000101101010101111111110100011010100011000001110101110001011100100010101011100101111010000110101101001101001110110011111111001111111010000110110100100100101110000100111 1011011000100001101001011100101011001000010111001111100000100010010111000111010000100101100010011100010000110111111100011011010001101011000101110010101100101000101000011011011111111011010100001110101011011110101010010111011001101001011000010100100011101010101010100000000010111111011110010101010111110011101000011011001000101011110111000011100111101111000000011011111011000000101010010000100111111100 0011101001011101101100101010000001110101111100001100101001111010100100011101101011100000010010111001001010011100011010011000111000010111011000100101000001010010101011101010110100001101010010100100000000011101100101001111110000110000011110001111100111101111111001000101000100111110011000000001000010110111010011110101101000100100000110110000000010100001110110011110001011001110110010101111000110010010 1000001010110010010011001011100110001101010111010110011100110010100001110111010111101011111001110100000010110101101000100100001011001010010110011011000000111001110011001000001111111101000100001101000011000101110010001010110011011111110001100011010001001111100010000111001111000011101110000011111001001001010111010000000101110110101111011111111101111010111110110111011101101110001110000110100111010011 1101001010101001010000111110111001001000011001110101100001010101101100110111011001110000011001000001100001100111011110100000100011011110110110011011010010100111110011110001001000011000111111110001000110011110110000111011110010100100000011000110100000101101010011000110111110101001100000111100001000101000100110110011101101010001011101001111001011011011101011000001000010100000011101000100011110110001 0011101110001110110100100011101010011100111000000001001010011000101100001001010101100000101011111100101011000011000100010101110011101100100110011001000011001011111000100100011111101011100100110110001110000110100010111110010011000001001001101101100010000110101111001010001111001000000100010000100001011110011101111100010001110000010100100010001000110001011001010010111100000101011010110100001100010111 0101011111010100010011111100101011010000000010100001111110111001011001101010001010010010101100101001100110001110100011001110000110000110000101010011101010110001101111010110011011111100010010000110110001010100110011000111011001011001000100011101001101010101101000011111011111111101011101001110001100100101111111111011101111111000011010111100010111100101110000001000000001000001101000000000100001010011 0000101010000000001101111001111001010111010011110000010001000010110111001000001111010101100101001010101000000001100001100101001110011010110010001010000010001000001000001110011001110111110011110111101000010100100000010000000110011001010110110011101001001101010110110110010011110011101000010000011110000111000011111000100010000100010001010101111011010000100110010100000111111010111101001100100101000001 1011001010001101110110100101110001111011100010111100001101110010001001011000001000011001101001110011100001110000010110101100101011011001110001100111001001110001111111111000001101100101000110010101000100001001010001001100110011101110001100100101011100011000000001111001000001011010111011100011100001110001001011110001100001100001010010010010010010111110000010001001010111110001110011010111001100100100 1010010100101111000011010100001101000111001100101001101001001100110100000011011000111110110010100010111110100101101010000001100111110111111100101011001101111100110010000011100010001110010110000011001010110000011001001000000010111101010000011010101010111010011101010110011101011000011001100100101010000110101010101011001110100110100111110110110100011001011001001110001011011110111001001100011010010000 1000000011001110010101111100000010010111000001111110110101100100000110000100110001100101001100010000010111100111011001001101100110101001011100000111111111010011101010001101101010110101001001011010011010110110011000010011010110111011000001100110011000010100100000001001001111111100110000011011010100010111001001110010010011101100011010100000001011101101000001011001001110100101011001100010101101000100 1100011101010001011111010111000110110000111101110111110110000000000110100011001001100010001011101010100011100101111110011001001010011010010011011110011011111011111010001100111100011110101000111101010111110110001101101000100101010000111001110101111111010000110011001110011000000101100011100110010111011110101000110011000111101011100010001101111001010001100001011110000101111011010101111110110011010100 1000101100101101011111001100101101000000111100100100111110101000010010010100111011111000011100100110001011000011111000001100110101000111011001101100011010010100111100011101110110001111001000000010101011101011000001001001010111111011000110101111101100000101111000000110011100001010110111001011101100111010000000101000101000010010100111100111100101100001110001101101111011110101111101110100101110101101 0011010110001001000011100101010011011100001100100001001111000001110101001111101001010100111100011010101111100101111011101110111101100000010000011111101001010000011001010110010001111111010110000100011110101111110111000001001101101011110001111100100101010000111100010001110001100110111101010001100000001111111011101100010110011101101000100001010111011111000000011011110100010101111100101011101111011011 0001111001101101111010000100101110001111101100011000011111010011011001111010001101010011010010010110010101111110110010111100001010111111110001000101110100110110101011011001111001001000010011010001111011011101011010111100100110100001001110010011011110001000001111100011011100100110111101001111111001110100010001110100001110110001110101011101011001000011010001010100001100000011011101010110101101010010 0010010010101000100110001001000011111010001000100111001000010111010001111100010101100111000111001111111000111001100010010000010000101101111111110101011101010111101110111010100100011001000100010001110101001110110111101100011010000011100101001000100000000101111011111010000011110110000101011011001110110010100010000000010000100101111011100000000110011111110110010101110100001011110010001011100011001001 1101001001110010101000000100010111101101010100001010010101111101000101111000011010011111010100101010110010100010111011101001111111001010101110110110000110010001011000011001000010110111001111101010000100000110000111001010101110011001000110101010110100001000100010101001001001111011000111101000100111010011101110111001100001100101111101110101101000000111101100010101000001100101100011110011011101001101 1010000111000001110011011001110001010110000100111000110101111111100001111110111000000011110101011111010000101101010111110101111101101011101010001110110110010111101100011010110001001001101010010011100000101111110011010110010000111010100111100001010111100110011001100010011011101101010011011111110111111110010101111100001100111111110000011100110000010101001110000001110001000101011000110101000010001001 0111100100000011010001001001010111001101110110101010001110100110101111100010011100101101010110100000000001110101000000111000001001000110111100111101001110011001011101111010001010000010101101100000111110001100100010110001101100100000100101111000110110100000000110000010000101110100010101000110010100100010011010101101110111001111001110100100001100011011101111111001101001010001111011010100100111010001 1110001101101001011000011111000111111001001010110111100111001010000000100110110010101010100101101011011100011011010110000110010001100101111011100010110100001101110111110111110111000001110110111110000000111001111110000010001011011111111000000000110010100011001110001110101110110111000110110110111000011011100000001100010110001010100010011101010001000101101100111101110101001100001110100111110010010111 0000011111101111100100011010001101100001011110100011111010110001101101011100000011000000011010110010000010100010100100001001010110111110010111001000000011110111110000000111010101101000110010000100101100111010000101000110000110110111101101100011101011111011000001111111001001111101001001100000000000010100010111101111101111111011111110010101011011100110111101001101011011001000011010110111110111001010 1001101011001011100101010000101101010101000001111010111011110110001000110010010010010010111101011010110001001100000010100011100010110000110100001000001000011100111110010010100111001110001010010110010101101000001111101011011001011101111110111001011100001000001001001001000111111001010011101000101111000011011110001010110010100100111001101010100011001011100110011000011111100001001110110011101111100001 1101101010001011001111101101010000000001011111011110110000111011100110111001111011011001010101110111100010110111001111110000100110101010010001000011111001010101011001010001111001000010111010001111110100111110110001010011010011111110110010110111110110000101111100101111000110110100110111001001101111111011000001110110010010001111011110000100010010100111110100011001100101001001010000101110100000010010 0000101111000000110101111011010101110111000010111111010110010110011001011100010001010000100011011101101010111001010001001111100111010001100001001010001011110011110000100011010011100101101100111010010010111000101010000011101010101010000110000100101110010111110010110100101000001011100110111010011100101001110101000101001001011100100101101110110010101000011111001001001000011101000010101110011111001011 0000001001110111001111010001000000010001000111011011101001011100001110111101111001110101001001010001111110011011010001111001100010111001010110110010111110110110110110010001000111010101011010000111011010010110101011010001100110001100111010001100110100000100010100011001101100001111001001110011100110101011100000001011101011011110111000011111001100100100110001011110000101101000001010011110010110101011 1110010011011100110010000001101011010010010110110100001000101011101001000011111110010111011101001010000011011100111100100111011110100101101011001010111000110100110110100000100001000001011001111110000011010010011011011110100101110110101011101101111010100100101101011110101100001100101100000011001011110110001010000111011000100000010110000010001001010100000111101010111001111001111000001011110011001001 0111011100100101010100100001010011101001001001000011001000011010000000011011101101100010101011010100100111101110001011101011100101000011110111001010000100111101110111000111110100111010101010011100000111011100111100111000101111001010100011100100100011011010011101010111010100011110011000110101100110000000100000011110011100001100011100100101000101110001011100001111000011101001101011110001111010100011 0010000000001110010110011000100100001110011110100010101111011110010100110101110101100101011010000001101011000010011001011100000011001000101010110011000101111100010110110011111111001110011010101000010001110110110000011001000101110110110000111100000011100100000100110000010000111001101000101011100110001101000001000000110010001100001010100111000101001111011000011110111111101101001010111011101110011110 1000100100000100110010111001011011111100100001101011100000100110111010101011100110111100100110111111110110011001100111100000011000110011100111011100110110101011101001100100100110000100101111011011011101011000111011010010000101010101110010100101111101000001101110100100100000000111100010010111100000110100100001111101010011101001111101111100101111110110100001000110011100101100000011101001111110100011 0111110001100110110111001000011000000011101100101101011011101111001100001110101111011100011101111010001000011110000000000001010100001100101001101001011110011101011011010001001000110100010100110101110110111001111010001000000011100010001001000100111111011110001001110100011110011101010000011000001001111110111101111010111010010000101011010000101000000110100001101000100011011110000010001101100110111100 0011000110011101010101100001111100101000101100011110110010010001001000000101101101010110000110101100111111110011111111000111100011001101000100100101110111111001110110001110011101010111001010000011011101000010110000101101000100011101101001001010011101100111111111101101000001010011010110100001100011010011011010001011011001001100001101101000100110001010010101001000001001000011100110100001011101100111 1011111100101101110111101110001011011000010110010010000101101011100110010100100100110111010001001001101001000101010111111100011110011110110101110111111111010001001111111101000111101010110110101110010011110011111110000101010110011101011100011010101110001011100000011001001001010011111010100011001110011111100101101100001010101110110010111000001101100010101001101111000001111011111010001001010010011100 1101100000010001000010010001110100111101011101000100010100001101010100111001001001101111100010011110101110110001001111110010111001111111110000000100001010111000001111001011000110111101010110110010111101111110010110110100000101001110001001101101101101000010100111111000111010100111111011101000110000011010100101100111000110010000011011101101010010001101100100100011111001010000000000111101100011110101 0010011100010000101101100010000111010111100001111000000101001111011010101111000101100110011110101001001011100010101011111111000101001100010100110110100011111110101111011001010011011111100001000100100010000001000100110011110111111101010011110011001000101010000010111011001100110010101110010101110001111110111101001001001010110011011111000110010101001011001101110001010100101011111001100001001000000011 0001010110010101000111010111111100100010110110001101001100011101101101010111000010100010101001101110101010010110111010001101111110110001000100010010100100110100001110000011111100001101110100111110101111001000110101010111011100000111111010011010111010011100011011100101001011001110010111000100010000001101011001001011010101000100000101001111010001110100011011111000111100101001000001101111000000011000 0110111110111000110011100011101001100110110001110111101011000110110000101110010011000110101001111111100101110101010111110110101001111111010010011011000101011111101000000001010110000110011111110001111001011010110110010011100111100100001100111101001001000000101101110000000001010111101111111011010000110001101100010111001000001100111011010010110111100100000011111011000101111011111001001011100101110100 0010000010000001011001101010011011010011101011100100101100011101011101000111011000110001000001010011000011110010110110000110100110010111110001110011001010011010010110111101100100110001000111010001111110100011111010111001001000100011110011100010110111010011010001010001111010011110010101100000010000010010000011111100000001101011110111011110010101011100001100110001100010111011111111011100000000100010 1001001011011011000010110110110011000010011010101011001011011101011000101100010100101110110101101100101011010111010110101101100000011110001100101101101111101001100111010111000011101010010000101101110111000101101111111000011100111100001100011101010011111011001111001011011111000100111011110101001111001011101110001010100111111001000111100100001101001101110101111111110111111000101110001001110000011010 1001011111000001101000100101110110000100110110010111100010001010101111100110011001011000001011011010101000011111101011101111101101001101101101100111010001111111001111011110101011000110100001011010011001101101010101111100000010101001101100010010110011101101011101010100111011010000011010110110111001010010000001010111001010101100010011101000000010000110111100001010000010011111110101000001010000111100 0101111110010010000110001110011110011001010101100101111111100110101011110111111111111111000111010101100101110100010000110001100001011110011111101111000010001110100011010000010010010101011100110111001000100110110111101100100000000010110101110000100100100101101100111011100011100101110010010010100011111110000100011111010010101001111111110001010001011100101000110010000001100110011010110000100111010010 1011101111110011011110010100110000001011001001110000111111000011111110011000001010111000101010000110100010000110000110100000111101101000000110011111010100111101110100001000011000010011000010011111101001110101011011111011110001110010001000110011111110000001010100011110000100101010001011101011001110001000010010011011001111111101001010111000001101110000000011011111001000010100001100110110100000001010 1000010010100110011101001001111110101000010011100010101110010111101100101001100100100110111000000000110101011000011011011100110000110111101001101111011111010000101101001011100001111010111001100000101000111110011100001101101000101010100010101010111010011010011011011110110111101001010100010111110001110101100010110000011011101110010111100110101010111001110110001110000111101100000110010011000010101101 1001000110111101001110001111100011001101010010010011001100011101001011010000010000101001100101011001100110111110000001110100101001010111011111010000011011010111000110111100110010101011010001010110010011110100011010010000111111111011101010100100010101100010100010011100100110001000110011100010100110100100111100100100111001110011101101111000000101100111011001110010010010011010110000010110100101110110 1110001011000011011010001110010000000101001001011011001000101000110111110111010001001001111001001011100111010000110111011110001011001010011101110010110000001101110001101111001011100111010011111111101001101001010010100001101010100100110100000011000010010110100111011000010000100101110100000101000110010110110010010001011110110100111011001000010101000001100010110100000111011011010010101101010001001110 0000011001001001010011110101010111110000001011001111100011110100101111010010011101001011011100101000010001011011001111110101001100110110001110001011001001101111101111010010101110010101010011000000100010011100001010111111000001110101111000000001110011001101010111001101110001000100101011111101111000011001111100000000001101101110011011110001111101111010010000010111101101011011000001100010100010111101 0011010100110100110011010111111110001110110100011111110110011100111101100001100100111001111000100101110010101010000010010000111100111111011101101001101000100011110111011010100101110110001110000000011010101100101101000010001011000110110000100010100111100000000101001010001100010010011100110110011001101101100111010110100000111111000100010100011011100001110010110010110001010011011010111101010101110110 1000011111110010111100110101111011001101101001011101111111000100101101101001010100010010100010000000011010000101101000011111000010010100011010000100110111001100000011001001110100111011101000010010101011000011001101010101110001101110101110011100111010101000010111011001100111100111101001100011101100000110010111101011011011111100100100010011001111001001111011101000101011010000100001001101010101111101 0011111110011001011111011000001110110110111110010111100100011100101101111000010010000110100111011111100010010010110010100000001000110101011111111111000011001110110011111001011010001011111100001001001100111110011000010101000001000111000010100010100001100011001011101010001000101000001101010111000110100000110010000110010010100010111010111101111110010011000111101101011110010101001110100111000010101101 1011101011000010011011000001101001101110111001100000011110010111000110010101010001101000001110000111110011101110110110111111111000111010101001001111001011110110011101111011011000101101000100010110001001001000100011010000001110001000110111000101001000000110011010000111010010000111110111111110011110011010000011010100011001001111011110001010111100100000110000001011001100001001111100111011010100010000 0101011100000010000111110001111100011110100110101111010111001001111111101000010100011011001100101111010110111110101111100000111011110111100000001011000101010100001001001101000101011010010010111000100110101111011111010011011000110011111110111001010100001111001110101110000100101100000010011111011110001110011010101011110000001101000001011101001110100111111010001011100011111000010100010101100110000011 1001111000011000100111010000100101101011001101101000111001000011010011010110101001000100000100001101011001000101110110101111100011000001110011001011000001001101011001010101001001001101110011010010000111000110001111000010000110111100111001000100110001111101010000101100101110111000011101001100001000111100011110000001110100010111101001110100101101011010010101110100111101001000100010011001011011010100 0011110100100111000110011000100101100111001100011101011000111111010100111011000111001011001001110001101010111110110010010000011111100100100110000111100101000000101000100010100001001110010101011110010010100001101101001101000101001001011101000011101111110100110011010000001001101010110000100100110110011011100101010011110000101101110010101011000001111101000001100111101011000110100110010110101010110110 0111101111101011001111011100101100111101011111110001111000000111001000111101101011101001000101011111110011100011010011101001000010010000000101000110011010111111110001100001011110010111100001000000100100110010101010110010101100101110110101000010001101001111111101101010101011111011100010000110101111110110111000011001000110010111101001110011100011110011011000011100001100000010110000011001001110001011
cTrader Algo

Symbol【cAlgo API】

10/27/2020 1/28/2023

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

通貨ペア情報取得用

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